#include int main(int argc, char *argv[]) { FILE *fp1,*fp2,*fp3; //δήλωση των 3 αρχείων fp,fp1,fp2 int x[4][5], y[5][3], z[4][3]; //δήλωση των πινάκων int i, j, k; //δήλωση των βοηθητικών μεταβ-λητών printf("Το πρόγραμμα διαβάζει δύο αρχεία \n"); printf("και αποθηκεύει τις τιμές σε 2 πίνακες. \n"); printf("Μετά εκτελεί τον πολλαπλασιασμό των δύο πινάκων \n"); printf("και αποθηκεύει το αποτέλεσμα σε ένα τρίτο αρχείο. \n\n"); if(argc!=4) //έλεγχος για τα ονόματα των 3 αρχείων της γραμμής εντολών { printf("Οι παράμετροι της γραμμής εντολών δεν είναι σωστές. \n"); exit(0); } if ((fp1=fopen(argv[1],"r+"))==NULL) // έλεγχος του 1ου αρχείου { printf("Δεν υπάρχει το 1o αρχείο\n"); exit(0); } if ((fp2=fopen(argv[2],"r+"))==NULL) // έλεγχος του 2ου αρχείου { printf("Δεν υπάρχει το 2o αρχείο\n"); exit(0); } if ((fp3=fopen(argv[3],"w+"))==NULL) // έλεγχος του 3ου αρχείου { printf("Το αρχείο %s δεν ανοίγει για εγγραφή. \n",argv[3]); exit(0); } printf("Τα στοιχεία του 1ου πίνακα ( αρχείο %s ) είναι:\n\n",argv[1]); for (i=0;i<4;i++) { fscanf(fp1,"%d%d%d%d%d\n",&x[i][0],&x[i][1],&x[i][2],&x[i][3],&x[i][4]); printf("%d\t%d\t%d\t%d\t%d\n",x[i][0],x[i][1],x[i][2],x[i][3],x[i][4]); } printf("\n"); printf("Τα στοιχεία του 2ου πίνακα ( αρχείο %s ) είναι:\n\n",argv[2]); for (i=0;i<5;i++) { fscanf(fp2,"%d%d%d\n",&y[i][0],&y[i][1],&y[i][2]); printf("%d\t%d\t%d\n",y[i][0],y[i][1],y[i][2]); } printf("\n"); fclose(fp1); fclose(fp2); // Πολλαπλασιασμός των 2 πινάκων for (i=0;i<4;i++) { for(j=0;j<3;j++) { z[i][j]=0; for (k=0;k<5;k++) { z[i][j]+=x[i][k]*y[k][j]; } } } for(i=0;i<4;i++) { fprintf(fp3,"%d\t%d\t%d\n",z[i][0],z[i][1],z[i][2]); } printf("Τα στοιχεία του γινομένου ( αρχείο %s ) είναι:\n\n",argv[3]); for (i=0;i<4;i++) { printf("%d\t%d\t%d\n",z[i][0],z[i][1],z[i][2]); } fclose(fp3); printf("\nΠατήστε Enter για έξοδο..."); getchar( ); }