Создать два бинарных файла - из четных и нечетных элементов исходного соответственно - C (СИ)

Узнай цену своей работы

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

1.(бинарный) Создать бинарный файл с числам(вводить с клавиатуры). Затем создать два других бинарных файла, в один пойдут четные числа из исходного файла, в другой нечетные. 2.(текстовой) Матрица действительных чисел размерностью м х n хранится в текстовом файле по строкам. Первая запись файла-величины м и n. Сформировать матрицу 3 х n , каждый элемент которой содержит три наибольших по модулю элемента соответствующего столбца исходной матрицы и записать ее в текстовый файл. Зарание спасибо.

Решение задачи: «Создать два бинарных файла - из четных и нечетных элементов исходного соответственно»

textual
Листинг программы
#include<stdio.h>
#include<math.h>
#include<iostream>
 
int main(void)
{
    FILE *f1,*f2;
    int m,n,i,j,max1,max2,max3,pos1,pos2,a[100][100];
    
    f1 = fopen("input.txt","r");
    f2 = fopen("output.txt","w+");
    
    fscanf(f1,"%d %d",&m,&n);
    
    for(i=0;i<m;i++)
     for(j=0;j<n;j++)
     {
         fscanf(f1,"%d",&a[i][j]);
     }
     
    for(i=0;i<n;i++)
    {
     max1 = abs(a[0][i]);
     max2 = abs(a[0][i]);
     max3 = abs(a[0][i]);
      
     for(j=1;j<m;j++)
      if(abs(a[j][i])>max1)
      {
          max1 = a[j][i];
          pos1 = j;
      }
      
     for(j=1;j<m;j++)
      if(abs(a[j][i])>max2 && j!=pos1)
      {
          max2 = a[j][i];
          pos2 = j;
      }
 
     for(j=1;j<m;j++)
      if(abs(a[j][i])>max3 && j!=pos1 && j!=pos2)
      {
          max3 = a[j][i];
      }
      
     fprintf(f2,"%d %d %d\n",max1,max2,max3);
    }
    
    fclose(f1);
    fclose(f2);
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и математическими операциями
  2. Объявление переменных:
    • f1, f2 - указатели на файлы
    • m, n - количество строк и столбцов матрицы соответственно
    • i, j - индексы для обхода матрицы
    • max1, max2, max3 - для хранения максимальных значений на текущей строке
    • pos1, pos2 - позиции найденных максимальных значений
    • a[100][100] - матрица для хранения данных из файла
  3. Открытие файлов input.txt и output.txt для чтения и записи соответственно
  4. Чтение первых двух чисел из файла (m и n)
  5. Обход матрицы и чтение всех чисел в нее
  6. Поиск максимального значения на каждой строке и запись его в max1
  7. Если найдено значение, которое больше max1, то оно записывается в max1, а позиция этого значения в массиве в pos1
  8. То же самое для max2, но с проверкой на равенство позиции значения pos1
  9. То же самое для max3, но с проверкой на равенство позиций значений pos1 и pos2
  10. Запись найденных максимальных значений в файл output.txt
  11. Закрытие файлов Вывод: Данный код занимается чтением данных из файла input.txt и записью в файл output.txt двух максимальных значений и их позиций на каждой строке матрицы. Сначала инициализируются переменные для хранения максимальных значений и их позиций. Затем происходит обход матрицы построчно, где на каждой строке ищутся максимальные значения. Если найдено новое максимальное значение, оно записывается в переменные max1, max2 или max3, а также в соответствующую переменную pos1, pos2 или pos3. После обхода всех строк, найденные максимальные значения и их позиции записываются в файл output.txt. В конце файлы закрываются.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы