Сформировать файл, содержащий только те строки исходной матрицы, в которых отсутствуют отрицательные числа - C (СИ)

Формулировка задачи:

В файле хранится числовая матрица. В первой строке файла записаны два числа: количество строк и столбцов матрицы, а затем сама матрица. Сформировать новый файл, содержащий только те строки исходной матрицы, в которых отсутствуют отрицательные числа.

Код к задаче: «Сформировать файл, содержащий только те строки исходной матрицы, в которых отсутствуют отрицательные числа - 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;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

15   голосов, оценка 4.333 из 5


СДЕЛАЙТЕ РЕПОСТ