Сформировать файл, содержащий только те строки исходной матрицы, в которых отсутствуют отрицательные числа - C (СИ)
Формулировка задачи:
В файле хранится числовая матрица. В первой строке файла записаны два числа: количество строк и столбцов матрицы, а затем сама матрица.
Сформировать новый файл, содержащий только те строки исходной матрицы, в которых отсутствуют отрицательные числа.
Решение задачи: «Сформировать файл, содержащий только те строки исходной матрицы, в которых отсутствуют отрицательные числа»
textual
Листинг программы
#include <stdio.h> #define N 20 int main(){ FILE *f ; int size_row,size_col, i, j, neg_count,neg_rows=0, a[N][N],b[N]; f = fopen("input.txt", "r"); fscanf(f, "%d", &size_row); //i fscanf(f, "%d", &size_col); //j printf("Array in file:\n"); for (i = 0; i < size_row; ++i) { for (j = 0; j < size_col; ++j) { fscanf(f, "%d", &a[i][j]); printf("%3d",a[i][j]); } printf("\n"); } fclose(f); for ( i = 0; i < size_row; ++i ) { neg_count=0; for ( j = 0; j < size_col; ++j ) { if(a[i][j]<0) neg_count++; } if(neg_count==0) b[i]=0; else { b[i]=1; neg_rows++; } } if(neg_rows==size_row) //если во всех строках есть отрицательный элемент { printf("\nAll rows negative"); return 0; } else { f=fopen("output.txt", "w"); for ( i = 0; i < size_row; ++i ) { while(b[i]!=0&&i<size_row) i++; if(i<size_row) { for ( j = 0; j < size_col; ++j ) { fprintf(f, "%3d", a[i][j]); } } fprintf(f,"%c",'\n'); } fclose(f); printf("\nDone!\n"); } return 0; }
Объяснение кода листинга программы
Вот список действий, которые выполняются в этом коде:
- Ввод размера матрицы (количество строк и столбцов) с помощью функции fscanf.
- Чтение матрицы из файла input.txt и вывод её на экран.
- Инициализация переменных для хранения количества отрицательных чисел в строке и булевого значения, указывающего, содержит ли строка отрицательные числа.
- Поиск отрицательных чисел в каждой строке матрицы.
- Если все строки содержат отрицательные числа, выводится сообщение
All rows negative
и программа завершается. - В противном случае, открывается файл output.txt для записи.
- Перебираются строки матрицы, начиная с первой (поскольку в процессе поиска отрицательных чисел могли пропустить строки).
- Если булево значение равно 0 (строка не содержит отрицательных чисел), строка записывается в файл output.txt.
- После записи строки в файл выводится символ новой строки.
- Если булево значение равно 1 (строка содержит отрицательные числа), переходится к следующей строке без записи в файл.
- В конце программы выводится сообщение
Done!
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д