Поиск максимального элемента матрицы - C (СИ)
Формулировка задачи:
Доброго времени суток. Есть задача со следующими условиями:
Пусть в файле, компонентами которого являются целые числа, первым элементом является размерность квадратной матрицы, остальные элементы образуют строки этой матрицы. Написать программу поиска макс. элемента матрицы, определить номер строки и столбца. Использовать только файловые операции.
Вобщем, начал я было писать, и застрял. В тексте ниже есть несколько упрощений (наподобие того того, что первый элемент от 2 до 5, и это условие пока не проверяется - суть не в этом). Главная проблема - как используя только файловые операции перебирать значения? Т.е. когда используешь матрицу - все понятно, пишешь цикл for и перебираешь по индексу, а как быть здесь?
#include <io.h> #include <stdio.h> #include <stdlib.h> #include <malloc.h> void main () { int mas[26]; puts ("Vvedite elemetbI massiva (n1 от 2 до 5)"); FILE *x = fopen ("kontwork.txt", "w+b"); //создание файла if (x == NULL) { puts ("Error!"); exit (1); } for (int i = 0; i < 26; i++) //запись в файл значений { scanf("%d", &mas[i]); fwrite (&mas[i], sizeof (int), 1, x); printf("Input:%d\n", mas[i]); } rewind (x); //возврат каретки к началу файла int size, *arr; fread (&size, sizeof(int), 1, x); printf("Razmer = %d", size); //проверка размера FILE* tmpfile (void); //создание временного файла fread (tmpfile, sizeof(int)*size, 1, x); //считали первую строку в ТМР
Решение задачи: «Поиск максимального элемента матрицы»
textual
Листинг программы
#include <stdio.h> int main(){ int i,k,n; int a; int max; int line,column; FILE *in=fopen("input.txt", "r"); if (in==NULL){ perror ("ne ydalos otkrit file"); } fscanf (in,"%d",&n); fscanf(in,"%d",&max); i=0; k=0; while (fscanf(in,"%d",&a)==1){ ++i; if (a>max){ max=a; k=i; } } line=1+k/n; column=1+k%n; printf ("matrica razmernosti %d, imeet max element [%d][%d] ravnii %d",n,line,column,max); fclose (in); return 0; }
Объяснение кода листинга программы
В этом коде осуществляется поиск максимального элемента в заданной матрице. Вот список действий, которые выполняются в коде:
- Объявление переменных:
i
,k
,n
- счетчики для чтения матрицы;a
- временная переменная для хранения значения элемента матрицы;max
- переменная для хранения максимального значения;line
,column
- переменные для хранения координат максимального элемента.
- Открытие файла
input.txt
для чтения. - Чтение размера матрицы из файла.
- Чтение первого элемента матрицы и обновление значения
max
, если новый элемент больше текущего максимального. - Начальные значения
i
иk
равны нулю. - Цикл чтения элементов матрицы до тех пор, пока не будет достигнут конец файла.
- Внутри цикла обновление значения
max
, если новый элемент больше текущего максимального, и обновление значенийi
иk
для отслеживания позиции максимального элемента. - После окончания цикла вычисление координат максимального элемента, используя значения
i
иk
. - Вывод сообщения, содержащего размер матрицы, имя файла, координаты и значение максимального элемента.
- Закрытие файла после чтения.
- Возврат 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д