Програмування мовою C
50 балів
У файл F1.txt попередньо записати матрицю цілих чисел А(N,N)
(згенерувати випадковим чином, N задати довільно, як константу
препроцесора). Прочитати матрицю з файлу, виконати описані нижче дії, їх
результати записати в файл F2.txt.
Знайти суму додатніх елементів, які розміщені під головною діагоналлю і
суму від’ємних елементів, які розміщені над головною діагоналлю.
Ответы
#include <stdio.h>
#include <stdlib.h>
#define N 5 // Размерность матрицы
int main(void) {
int i, j, matrix[N][N], /*Наша матрица из файла F1.txt*/
positiveSum = 0, /*Сумма положительных элементов под диагональю*/
negativeSum = 0; /*Сумма отрицательных элементов над диагональю*/
FILE *f = fopen("F1.txt", "r");
if (!f) { // Если файл указанного типа не найден будет выведена ошибка
printf("Error: can't find file F1.txt\n");
return 1;
}
// Считываем данные из файла F1.txt и заносим их в матрицу
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
if (!fscanf(f, "%d", &matrix[i][j])) {
break;
}
}
}
printf("F1.txt\n"); // Выводим на экран
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
printf("\n");
// Производим расчет суммы положительных и отрицательных элементов
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
if (i > j && matrix[i][j] > 0) {
positiveSum += matrix[i][j] ;
}
else if (i < j && matrix[i][j] < 0) {
negativeSum += matrix[i][j] ;
}
}
}
printf("Positive Sum: %d\n", positiveSum); // Выводим на экран сумму положительных чисел
printf("Negative Sum: %d\n\n", negativeSum); // Выводим на экран сумму отрицательных чисел
// Записываемся в файл F2.txt
fclose(f);
f = fopen("F2.txt", "w");
if (!f) {
printf("Error: can't open file F2.txt\n");
return 2;
}
// Запись результатов в файл
fprintf(f, "Positive Sum: %d\nNegative Sum: %d\n", positiveSum, negativeSum);
printf("The data was written to F2.txt\n");
return 0;
}