В текстовом файле хранится целочисленная матрица. Заменить в ней все числа, кратные 7, наибольшим значением матрицы - C (СИ)
Формулировка задачи:
В текстовом файле хранится целочисленная матрица. Заменить в ней все числа, кратные 7, наибольшим значением матрицы.
Исходные текстовые файлы могут создаваться в любом текстовом редакторе.
Решение задачи: «В текстовом файле хранится целочисленная матрица. Заменить в ней все числа, кратные 7, наибольшим значением матрицы»
textual
Листинг программы
#include<stdio.h>
#define n 3
int main()
{
FILE *in, *out;
int array[n][n];
int i,j,max_el,count=0;
if((in=fopen("input.txt","r"))== NULL)
{ printf("\nREAD ERROR!!\n");
return 1;
}
for(i=0;i<n;i++) //чтение из файла
{
for(j=0;j<n;j++)
{
fscanf(in,"%d",&array[i][j]);
printf("%d ",array[i][j]);
if(array[i][j]%7==0) // проверка на делимость
count++;
}
printf("\n");
}
fclose(in);
if(count==0) //если нет элементов, которые делятся на 7, то не продолжаем
{
printf("No elements to replace!\n");
return 0;
}
max_el=array[0][0]; // поиск макс элемента
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(array[i][j]>max_el)
max_el=array[i][j];
}
}
for(i=0;i<n;i++) //замена элемента
{
for(j=0;j<n;j++)
{
if(array[i][j]%7==0)
array[i][j]=max_el;
}
}
printf("\nTranformed matrix:\n"); //печать измененной матрицы
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",array[i][j]);
}
printf("\n");
}
if((out=fopen("input.txt","w"))== NULL)
{ printf("\nWRITE ERROR!!\n");
return 1;
}
for(i=0;i<n;i++) // запись в тот же файл, откуда читали, перезапись
{
for(j=0;j<n;j++)
{
fprintf(out,"%d ",array[i][j]);
}
fprintf(out,"\n");
}
fclose(out);
return 0;
}
Объяснение кода листинга программы
- Объявление переменных:
FILE *in, *out;- указатели на файлы для чтения и записиint array[n][n];- целочисленный массив размером n на nint i,j,max_el,count=0;- целочисленные переменные для управления циклом и подсчета количества чисел, кратных 7
- Открытие файла
input.txtдля чтения и проверка на ошибки - Чтение целочисленной матрицы из файла в массив
array - Поиск количества чисел, кратных 7, в матрице
- Если количество таких чисел равно 0, выводится сообщение
No elements to replace!и программа завершается - Поиск максимального элемента в матрице и сохранение его в переменной
max_el - Замена всех чисел, кратных 7, на максимальное значение
max_el - Печать измененной матрицы на экран
- Открытие файла
input.txtдля записи и проверка на ошибки - Запись измененной матрицы в файл
input.txt - Закрытие файлов
inиout - Возврат 0, что означает успешное выполнение программы