/********************************************************************************** Dintr-un fisier text se citeste o matrice patratica. Sa se afiseze: a) numerele prime ale matricii intr-un alt fisier b) sa se scrie perechile de numere distincte aflate simetric fata de diagonala principala intr-un alt fisier text File: test_matice.c Author: whatever **********************************************************************************/ #include #include #include #define outfile_name1 "numere_prime.txt" #define outfile_name2 "elemente_diagonale.txt" int get_linecount(char* filename) { FILE* local_file; char local_str[4096]; char* read_ok; int line_count = 0; local_file = fopen(filename, "r"); if (local_file == NULL) { printf("ERROR: file: \"%s\" could not be opened\n", filename); return -1; } while (1) { read_ok = fgets(local_str, 4096, local_file); if (!read_ok) break; line_count++; }; fclose(local_file); return line_count; } int is_prime(int n,int f) { if (n==f) return 1; if ((n%f==0) || (n==1)) return 0; else return is_prime(n,f+1); } int main(int argc, char* argv[]) { FILE* in_file; FILE* out_file1; FILE* out_file2; int line_count; int matrix[256][256]; int i,j; if (argc != 2) { printf("Usage: test_matrice \n"); return -1; } in_file = fopen(argv[1], "r"); if (in_file == NULL) { printf("ERROR: in_file: \"%s\" could not be opened\n", argv[1]); return -1; } out_file1 = fopen(outfile_name1, "w+"); if (out_file1 == NULL) { printf("ERROR: out_file: \"%s\" could not be created\n", outfile_name1); return -1; } out_file2 = fopen(outfile_name2, "w+"); if (out_file2 == NULL) { printf("ERROR: out_file: \"%s\" could not be created\n", outfile_name2); return -1; } memset(matrix, 0, sizeof(int) * 128 * 128); line_count = get_linecount(argv[1]); printf("File \"%s\" has %d lines, assuming %dx%d matrix\n", argv[1], line_count,line_count,line_count); // read matrix into memory for (i=0; ij) && (matrix[i][j] != matrix[j][i])) { fprintf(out_file2, "%d %d\n", matrix[i][j], matrix[j][i]); } } }; fclose(in_file); fclose(out_file1); fclose(out_file2); return 1; }