Λύσεις των ασκήσεων για
το μάθημα Προγραμματισμός II
(Λύση 1)
#include <stdio.h>
#include <conio.h>
#include
<string.h>
int str_index(char
*s, char *t);
main()
{
char
*s="piriminimikirhimi",*t="mi"; int pos;
pos=str_index(s,t);
if (pos!=0) printf("Last encounter of '%s' in '%s' is in the %d place\n",t,s,pos);
else
printf("'%s' does not include '%s'\n",s,t);
}
int str_index(char
*s, char *t) {
char *fnd;
int pos=0;
do
{
fnd=strstr(s,t);
if (fnd!=NULL)
{
pos=pos+fnd-s+1;
printf("pos=%d\n",pos);
s=fnd+1;
printf("s=%s\n",s);
}
} while (fnd!=NULL);
return(pos);
}
(Λύση 2)
#include <stdio.h>
#include <conio.h>
int endofsentence(char ch);
int endofword(char ch);
void displayresults(int s, int w,
int c);
void main()
{
FILE *f1;
int s=0,w=0,c=0;
char ch;
f1=fopen("file1.dat","r");
while ((ch=getc(f1))!=EOF)
{
putchar(ch);
s=s+endofsentence(ch);
w=w+endofword(ch);
c++;
}
displayresults(s,w,c);
fclose(f1);
}
int endofsentence(char ch)
{
if ((ch=='.') || (ch==';') || (ch=='!')) return(1);
else return(0);
}
int endofword(char ch)
{
if ((ch=='.') || (ch==';') || (ch=='!') || (ch==' ') || (ch==',')) return(1);
else return(0);
}
void displayresults(int s, int w, int c)
{
printf("\n\nNumber
of sentences:%d\nNumber of words:%d\nNumber of characters:%d",s,w,c );
}
(Λύση 3)
#include <stdio.h>
#include <conio.h>
#include <assert.h>
#include <stdlib.h>
void pwr(int *array_ptr, int array_size);
void main() {
int array[1],cnt,i,*array_ptr,size=0;
/* Ο
πίνακας array[1]
χρησιμοποιείται για να μπορέσουμε στο πρώτο σκέλος να διαβάσουμε ένα προς ένα
τα δεδομένα και να υπολογίσουμε τον αριθμό του*/
FILE *f1;
// 1ο σκέλος
f1=fopen("input_file.txt","r");
while (fread(array,sizeof(int),1,f1)) size++; /* Όσο η fread() δίνει έξοδο διάφορη του μηδενός, δηλαδή διαβάζει ένα στοιχείο, συνέχισε
να διαβάζεις από το αρχείο και αύξανε το μετρητή των στοιχείων που περιέχονται
σε αυτό*/
fclose(f1);
// 2ο σκέλος
f1=fopen("input_file.txt","r");
array_ptr=(int *)malloc(size*sizeof(int)); assert(array_ptr!=NULL);
// 3ο σκέλος
fread( array_ptr,sizeof(int),size,f1 );
fclose(f1);
// 4ο σκέλος
pwr(array_ptr,size);
f1=fopen("output_file.txt","w");
fwrite(array_ptr,sizeof(int),size,f1);
fclose(
f1 );
// 5ο σκέλος
free(array_ptr);
system("pause");
} // Τέλος της main
void pwr(int *array_address, int array_size) {
int i;
for (i=0;i<array_size;i++) {
array_address[i]=array_address[i]*array_address[i];
// Εναλλακτικά: *(array_address+i)=*(array_address+i)*(*(array_address+i));
}
}
(Λύση 4)
#include <conio.h>
#include <stdio.h>
#define SIZE 300
struct addressT
{
char street_name[30];
int street_number;
char city[30];
int zip_code;
};
struct CustomerT {
char name[20];
char surname[40];
addressT address;
char tele[15];
char job[50];
};
void save_data(FILE *fp,CustomerT *list);
void read_data(FILE *fp,CustomerT *list);
void read_customer(FILE *fp,CustomerT *s,int k);
void save_customer(FILE *fp,CustomerT *s,int k);
main()
{
CustomerT customer_list[SIZE];
// Έστω ότι φορτώθηκαν όλα τα στοιχεία των
συνδρομητών στον πίνακα
FILE *f1;
f1=fopen("customers.dat","wb+");
save_data(f1,customer_list);
read_data(f1,customer_list);
read_customer(f1,&customer_list[15],15); //16oς συνδρομητής
// Μεταβολή των στοιχείων του 16ου συνδρομητή
save_customer(f1,&customer_list[15],15);
}
void save_data(FILE *fp,CustomerT *list) {
int i;
rewind(fp);
for (i=0;i<SIZE;i++) fwrite(&list[i],sizeof(CustomerT),1,fp);
// Ισοδύναμα: fwrite(list,sizeof(CustomerT),SIZE,fp);
}
void read_data(FILE *fp,CustomerT *list) {
rewind(fp);
fread(list,sizeof(CustomerT),SIZE,fp);
}
void read_customer(FILE *fp,CustomerT *s,int k ) {
fseek(fp,k*sizeof(CustomerT),SEEK_SET);
fread(s,sizeof(CustomerT),1,fp);
}
void save_customer(FILE *fp,CustomerT *s,int k) {
fseek(fp,k*sizeof(CustomerT),SEEK_SET);
fwrite(s,sizeof(CustomerT),1,fp);
}
(Λύση 5)
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#define SIZE 10
int find_max(int cnt, int *buffer);
main()
{
FILE *fin;
int
cnt,index,deiktis=1,i,*buf,local_max,total_max=INT_MIN;
fin=fopen("file_b.dat","rb");
assert(fin!=NULL);
buf=(int *)malloc(SIZE*sizeof(int)); assert(buf!=NULL);
do
{
cnt=fread(buf,sizeof(int),SIZE,fin);
local_max=find_max(cnt,buf);
if (local_max>total_max)
{
total_max=local_max;
index=deiktis;
} // τέλος της if
deiktis++;
} while ((cnt!=0) && (cnt==SIZE));
printf("The maximum integer is %d and was found in the %d block\n",total_max,index);
free(buf);
} // τέλος της main
int find_max(int cnt, int *buffer)
{
int i,maximum;
maximum=buffer[0];
for (i=0;i<cnt;i++)
if (buffer[i]>maximum) maximum=buffer[i];
return(maximum);
}
(Λύση 6)
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
void read_data(int **parr, int n, int m);
void calc(int **parr, int *psom, int n, int m);
void main()
{
int **arr,*som,i,j,n,m;
printf("\nGive arr's first dimension (n) = ");
scanf("%d",&n);
printf("\nGive arr's second dimension (m) = ");
scanf("%d",&m);
arr=(int **)malloc(n*sizeof(int *)); assert(arr!=NULL);
for (i=0;i<n;i++)
{
arr[i]=(int *)malloc(m*sizeof(int)); assert(arr[i]!=NULL);
}
som=(int *)malloc(n*sizeof(int)); assert(som!=NULL);
read_data(arr,n,m);
calc(arr,som,n,m);
FILE *f1;
f1=fopen("put_data.dat","w");
fprintf(f1,"arr=\n");
for (i=0;i<n;i++)
{
for (j=0;j<m;j++) fprintf(f1,"\t%c\t",arr[i][j]);
fprintf(f1,"\n");
}
fclose(f1);
printf("\n\nsom=\n");
for (j=0;j<n;j++) printf("\t%d\t",som[j]);
printf("\n");
free(som);
for (i=(n-1);i>=0;i--) free(arr[i]);
free(arr);
printf("\n");
system("pause");
}
void read_data(int **parr, int n, int m)
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
do
{
printf("\narr[%d][%d] (within [65,90])= ",i,j);
scanf("%d",&parr[i][j]);
} while ((parr[i][j]<65) || (parr[i][j]>90));
}
}
void calc(int **parr, int *psom, int n, int m)
{
int i,j;
for (i=0;i<n;i++)
{
psom[i]=parr[i][0];
for (j=1;j<m;j++) psom[i]=psom[i]+parr[i][j];
}
}
(Λύση 7)
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
struct vect
{
float
x,y;
};
void read_data(vect *parr, int n);
void stats(vect
*parr, int n);
void main()
{
int n;
vect
*arr;
printf("
dim(arr) = ");
scanf("%d",&n);
arr=(vect
*)malloc(n*sizeof(vect)); assert(arr!=NULL);
read_data(arr,n);
stats(arr,n);
free(arr);
}
void read_data(vect *parr, int n)
{
int i;
for
(i=0;i<n;i++) {
printf("\n arr[%d].x= ",i); scanf("%f",&parr[i].x);
printf("\n arr[%d].y= ",i); scanf("%f",&parr[i].y);
}
}
void stats(vect
*parr, int n)
{
int i;
float
aver,minim,maxim;
FILE *f1;
f1=fopen("put_data.dat","w");
assert(f1!=NULL);
fprintf(f1,"A
=\t%f\t\t%f\n",parr[0].x,parr[0].y);
minim=parr[0].x; maxim=parr[0].x; aver=parr[0].x;
for (i=1;i<n;i++) {
if
(parr[i].x>=maxim) maxim=parr[i].x; if
(parr[i].x<minim) minim=parr[i].x;
aver=aver+parr[i].x;
fprintf(f1,"\t%f\t\t%f\n",parr[i].x,parr[i].y);
}
fclose(f1);
aver=aver/n;
printf("\nmin=%f\tmax=%f\taverage=%f\n",minim,maxim,aver);
}
(Λύση 8)
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
void read_data(int *pA, int size);
void stats(int *pA, int size);
void main()
{
int *A,n;
printf(" dim(A) = ");
scanf("%d",&n);
A=(int *)malloc(n*sizeof(int)); assert(A!=NULL);
read_data(A,n);
stats(A,n);
free(A);
printf("\n\n");
system("pause");
}
void read_data(int *pA, int size) {
int i;
for (i=0;i<size;i++) {
printf("\n A[%d]= ",i);
scanf("%d",&pA[i]);
}
}
void stats(int *pA, int size) {
int i,minim,maxim=0;
float aver;
FILE *f1;
f1=fopen("put_data.dat","w"); assert(f1!=NULL);
fprintf(f1,"A =
[%d ",pA[0]); minim=pA[0]; maxim=pA[0]; aver=pA[0];
for (i=1;i<size;i++) {
if (pA[i]>=maxim) maxim=pA[i];
if (pA[i]<minim) minim=pA[i];
aver=aver+pA[i];
fprintf(f1,"%d ",pA[i]);
}
aver=aver/(float)size;
fprintf(f1,"]\nmin=%d\tmax=%d\taverage=%f\n",minim,maxim,aver);
fclose(f1);
}
(Λύση 9)
#include
<stdio.h>
#include
<stdlib.h>
#include
<assert.h>
#include
<math.h>
#define SIZE 16
float get_ave(int cnt,
float *buffer);
main()
{
FILE *fin;
int
cnt,index_max,index_min,deiktis=1,i;
float
*buf,local_ave,max_ave,min_ave;
fin=fopen("file_b.dat","rb");
assert(fin!=NULL);
buf=(float
*)malloc(SIZE*sizeof(float)); assert(buf!=NULL);
do
{
cnt=fread(buf,sizeof(float),SIZE,fin);
local_ave=get_ave(cnt,buf);
if (deiktis==1)
{
max_ave=local_ave; index_max=deiktis;
min_ave=local_ave; index_min=deiktis;
}
else if
(local_ave>max_ave)
{
max_ave=local_ave;
index_max=deiktis;
}
else if
(local_ave<min_ave)
{
min_ave=local_ave;
index_min=deiktis;
}
deiktis++;
} while
((cnt!=0) && (cnt==SIZE));
printf("The maximum
average is %f and was found in the %d block\n",max_ave,index_max);
printf("The
minimum average is %f and was found in the %d block\n",min_ave,index_min);
free(buf);
}
float get_ave(int cnt,
float *buffer)
{
int i;
float aver=0.0;
for
(i=0;i<cnt;i++) aver=aver+buffer[i];
aver=aver/cnt;
return(aver);
}
(Λύση 10)
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <assert.h>
int getMax(float **pArray, int size, int i);
void main()
{
FILE *pF;
int i,j,col,size;
float **pArr,*buffer,trace=0.0;
do
{
printf("Give the size of the array (>=3): ");
scanf("%d",&size);
} while (size<3);
pArr=(float **)malloc(size*sizeof(float *)); assert(pArr!=NULL);
for (i=0;i<size;i++)
{
pArr[i]=(float *)malloc(size*sizeof(float)); assert(pArr[i]!=NULL);
}
for (i=0;i<size;i++)
for (j=0;j<size;j++)
{
printf("\nA[%d][%d]: ",i+1,j+1);
scanf("%f",&pArr[i][j]);
}
for (i=0;i<size;i++)
{
trace=trace+pArr[i][i];
col=getMax(pArr,size,i);
printf("\nLine %d: column %d, size=%f",i+1,col+1,fabs(pArr[i][col]));
}
printf("\n\nTrace(A)=%f\n",trace);
for (i=(size-1);i>=0;i--) free(pArr[i]);
free(pArr);
printf("\n");
system("pause");
}
int getMax(float **pArray, int size, int i)
{
int j,col;
float maxim;
maxim=fabs(pArray[i][0]);
col=0;
for (j=1;j<size;j++)
if (fabs(pArray[i][j])>maxim)
{
maxim=fabs(pArray[i][j]);
col=j;
}
return(col);
}
(Λύση 11)
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <assert.h>
void permute_columns(float **pArray, int size, int column1, int column2);
void permute_lines(float **pArray, int size, int line1, int line2);
void main()
{
FILE *pF;
int i,j,col,size;
float **pArr,*buffer,trace=0.0;
do
{
printf("Give the size of the array (>=3): ");
scanf("%d",&size);
} while (size<3);
pArr=(float **)malloc(size*sizeof(float *)); assert(pArr!=NULL);
for (i=0;i<size;i++)
{
pArr[i]=(float *)malloc(size*sizeof(float)); assert(pArr[i]!=NULL);
}
for (i=0;i<size;i++)
for (j=0;j<size;j++)
{
printf("\nA[%d][%d]: ",i+1,j+1);
scanf("%f",&pArr[i][j]);
}
printf("\n\nActual array:");
for (i=0;i<size;i++)
{
printf("\n");
for (j=0;j<size;j++) printf("\t%10.4f",pArr[i][j]);
}
permute_columns(pArr,size,1,2);
permute_lines(pArr,size,0,2);
printf("\n\nFinal array:");
for (i=0;i<size;i++)
{
printf("\n");
for (j=0;j<size;j++) printf("\t%10.4f",pArr[i][j]);
}
for (i=(size-1);i>=0;i--) free(pArr[i]);
free(pArr);
printf("\n");
system("pause");
}
void permute_columns(float **pArray, int size, int column1, int column2)
{
int j;
float temp;
for (j=0;j<size;j++)
{
temp=pArray[j][column1];
pArray[j][column1]=pArray[j][column2];
pArray[j][column2]=temp;
}
}
void permute_lines(float **pArray, int size, int line1, int line2)
{
int j;
float temp;
for (j=0;j<size;j++)
{
temp=pArray[line1][j];
pArray[line1][j]=pArray[line2][j];
pArray[line2][j]=temp;
}
}
(Λύση 12)
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
char **alloc_2_char(int size1, int size2);
void free_2_char(char **deikt, int size1);
void separate(char **pall, char **pnm, char **psr);
void sort(char **pnm, char **psr, char **pnm_new, char **psr_new);
void main()
{
char **all,**nm,**nm_new,**sr,**sr_new;
int i,j;
all=alloc_2_char(2,41);
nm=alloc_2_char(2,16);
nm_new=alloc_2_char(2,16);
sr=alloc_2_char(2,26);
sr_new=alloc_2_char(2,26);
printf("Give first name: ");
gets(all[0]);
printf("\nGive second name: ");
gets(all[1]);
separate(all,nm,sr);
for (i=0;i<2;i++) printf("\nnm[%d]=%s\tsr[%d]=%s",i,nm[i],i,sr[i]);
sort(nm,sr,nm_new,sr_new);
for (i=0;i<2;i++) printf("\nnm_new[%d]=%s\tsr_new[%d]=%s",i,nm_new[i],i,sr_new[i]);
free_2_char(sr_new,2);
free_2_char(sr,2);
free_2_char(nm_new,2);
free_2_char(nm,2);
free_2_char(all,2);
getch();
}
char **alloc_2_char(int size1, int size2) {
int i;
char **deikt;
deikt=(char **)malloc(size1*sizeof(char *)); assert(deikt!=NULL);
for (i=0;i<size1;i++) {
deikt[i]=(char *)malloc(size2*sizeof(char));
assert(deikt[i]!=NULL);
}
return(deikt);
}
void free_2_char(char **deikt, int size1)
{
int i;
for (i=(size1-1);i>=0;i--) free(deikt[i]);
free(deikt);
}
void separate(char **pall, char **pnm, char **psr)
{
int i,j;
for (i=0;i<2;i++)
{
j=0;
while
(pall[i][j]!=' ')
{
pnm[i][j]=pall[i][j];
j++;
}
pnm[i][j]='\0';
j=0;
do
{
psr[i][j]=pall[i][strlen(pnm[i])+j];
j++;
} while (pall[i][j]!='\0');
}
}
void sort(char **pnm, char **psr, char **pnm_new, char **psr_new)
{
int i,j,mikos,count=0;
mikos=(strlen(psr[0])<strlen(psr[1]))?strlen(psr[0]):strlen(psr[1]);
i=0;
do
{
if (psr[0][i]<psr[1][i]) count++;
i++;
} while ((i<mikos) && (!count));
if ((count) || (strlen(psr[0])>strlen(psr[1])))
{
strcpy(psr_new[0],psr[1]);
strcpy(psr_new[1],psr[0]);
strcpy(pnm_new[0],pnm[1]);
strcpy(pnm_new[1],pnm[0]);
}
else for (i=0;i<2;i++)
{
strcpy(psr_new[i],psr[i]);
strcpy(pnm_new[i],pnm[i]);
}
}
(Λύση 13)
#include <stdio.h>
#include <assert.h>
struct timeT
{
int hour;
int min;
int sec;
};
void scanTime(timeT *t);
void printTime(timeT *t);
void TimeInSec(timeT *t);
timeT SecInTime(int sec);
void main()
{
int sec;
struct timeT tme;
FILE *fin1;
scanTime(&tme);
fin1=fopen("file1.dat","r"); assert(fin1!=NULL);
fscanf(
fin1,"%d",&tme.hour );
fscanf(
fin1,"%d",&tme.min );
fscanf(
fin1,"%d",&tme.sec );
fclose( fin1 );
printTime(&tme);
TimeInSec(&tme);
printf( "\n\n\nGive number of seconds to be transformed:" ); scanf( "%d",&sec );
tme=SecInTime(sec);
printf( "\n%d seconds are transformed to:",sec );
printTime(&tme);
} //end of main
void scanTime(timeT *t)
{
FILE *f1;
f1=fopen("file1.dat","w"); assert(f1!=NULL);
printf( "\nGive hours:" ); scanf( "%d",&t->hour );
fprintf( f1,"\n%d
",t->hour );
printf( "\nGive
minutes:" ); scanf(
"%d",&t->min );
fprintf(
f1,"%d ",t->min );
printf( "\nGive
seconds:" ); scanf( "%d",&t->sec );
fprintf(
f1,"%d ",t->sec );
fclose( f1 );
} //end of scanTime
void
printTime(timeT *t)
{
printf( "\nTime
is:\t" );
printf(
"%d:%d:%d\n",t->hour, t->min, t->sec );
} //end of printTime
void TimeInSec(timeT *t)
{
int x;
x=((t->hour)*3600)+ ((t->min)*60)+ (t->hour);
printf( "\nTime in seconds is:\t%d",x );
} //end of TimeInSec
timeT SecInTime(int sec)
{
timeT t;
t.hour=sec/3600;
t.min=(sec%3600)/60;
t.sec=(sec%3600)%60;
return(t);
} //end of SecInTime;
(Λύση 14)
O1=(int ***)malloc(3*sizeof(int**)); assert(O1!=NULL);
for (i=0; i<3; i++)
{
O1[i]=(int **)malloc(2*sizeof(int*));
assert(O1[i]!=NULL);
for (j=0; j<2; j++)
{
O1[i][j]=(int *)malloc(3*sizeof(int));
assert(O1[i][j]!=NULL);
}
}
for (i=2; i>=0; i--)
for (j=1; j>=0; j--) free( O1[i][j] );
for (i=2; i>=0; i--) free( O1[i] );
free( O1 );
(Λύση 15)
#include <stdio.h>
#include <conio.h>
#include <assert.h>
#define N 3
void give_digits(int x, int *arr);
int get_digits(int *arr);
int transform(int x);
void swap_digits(int *arr);
void main()
{
int x,y,i=0;
FILE *f1,*f2;
f1=fopen("x_file.txt","r"); assert(f1!=NULL);
f2=fopen("y_file.txt","w"); assert(f2!=NULL);
for (i=0;i<N;i++)
{
fscanf(f1,"%d",&x);
fprintf(f2,"%d\n",transform(x));
}
fclose(f2);
fclose(f1);
}
void give_digits(int x, int *arr)
{
int y;
arr[3]=x/1000;
y=x%1000;
arr[2]=y/100;
y=y%100;
arr[1]=y/10;
arr[0]=y%10;
}
int get_digits(int *arr)
{
return(arr[0]+arr[1]*10+arr[2]*100+arr[3]*1000);
}
int transform(int
x)
{
int
y,arr_x[4],arr_y[4],i,temp;
give_digits(x,arr_x);
for (i=0;i<4;i++) arr_y[i]=(arr_x[i]+7)%10;
swap_digits(arr_y);
return(get_digits(arr_y));
}
void swap_digits(int *arr)
{
int temp;
temp=arr[0];
arr[0]=arr[2];
arr[2]=temp;
temp=arr[3];
arr[3]=arr[1];
arr[1]=temp;
}
(Λύση 16)
#include <stdio.h>
void main()
{
FILE *f1;
char ch,string[81];
int count=0; // character counter
f1=fopen("file1.dat","r");
while ((ch=getc(f1))!=EOF) // Read characters to EOF
{
if (ch=='b') count++;
}
fclose( f1 );
printf( "Number of 'b' appearances = %d\n",count );
}
(Λύση 17)
#include <stdio.h>
#include <conio.h>
struct paral
{
float a,b;
};
void readparal(paral *c);
void printparal(paral *c);
float paralarea(paral *c);
void main()
{
struct paral pr;
float area;
readparal(&pr);
printparal(&pr);
area=paralarea(&pr);
printf( "\n\t\tparal area = %f\n",area );
getch();
}
void readparal(paral *c)
{
printf( "\nGive side a: " );
scanf( "%f",&(c->a) );
printf( "\nGive side b: " );
scanf( "%f",&(c->b) );
}
void printparal(paral *c)
{
printf( "\nside a:%f",c->a );
printf( "\nside b:%f",c->b );
}
float paralarea(paral *c)
{
return((c->a)*(c->b));
}
(Λύση 18)
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <assert.h>
#define N 3
typedef struct {
char type[30];
char plates[30];
int year;
} struct_type;
void main() {
struct_type car[N];
FILE *f1;
int i;
f1=fopen( "2003_1_2_1.dat","r" ); assert( f1!=NULL );
for (i=0;i<N;i++)
fscanf( f1,"%s %s %d\n",car[i].type,car[i].plates,&car[i].year );
fclose( f1 );
f1=fopen( "2003_1_2_2.dat","w" ); assert( f1!=NULL );
for (i=0;i<N;i++)
fprintf( f1,"%s %s %d\n",car[i].type,car[i].plates,car[i].year );
fclose( f1 );
}
(Λύση 19)
#include <stdio.h>
#include <conio.h>
#define rows 4
#define columns 3
int add(int *pin, int number) {
int k, sum=0;
for (k=0;k<number;k++) sum=sum+pin[k]*pin[k];
//equivalent expression:
// for (k=0;k<number;k++) sum=sum+(*(pin+k))*(*(pin+k));
return(sum);
}
void main() {
int i,j;
int a[rows][columns];
for (i=0;i<rows;i++) for (j=0;j<columns;j++) {
a[i][j]=i*j; //for example
printf( "a[%d][%d]=%d\n",i,j,a[i][j]
);
}
printf( "Sum=%d\n",add(&a[0][0],rows*columns) );
}
(Λύση 20)
#include
<stdlib.h>
#include<conio.h>
#include<stdio.h>
#define
name "tape.txt"
void
read_character(FILE *fp, char *s, int k )
{
fseek(fp,k*sizeof(char),SEEK_SET);
fread(s,sizeof(char),1,fp);
}
void
save_character(FILE *fp, char *s, int k )
{
fseek(fp,k*sizeof(char),SEEK_SET);
fwrite(s,sizeof(char),1,fp);
}
void main() {
FILE *f1;
char ch;
f1=fopen(name,"wb");
do {
ch=getche();
fwrite(&ch,sizeof(char),1,f1);
} while
(ch!='$');
fclose(f1);