Заменить элементы главной диагонали матрицы средним арифметическим других элементов данной строки - PascalABC.NET
Формулировка задачи:
Данный файл содержит элементы двумерного массива. Создать новый файл с входного, заменив элементы главной диагонали средним арифметическим других элементов данной строки.
Вот такое вот задание, может болит голова или я дурак, но не могу написать код.
Решение задачи: «Заменить элементы главной диагонали матрицы средним арифметическим других элементов данной строки»
textual
Листинг программы
- uses crt;
- var arr:array [,] of real;
- i, j, innerJ, arrSize:integer;
- iFile, oFile:file of real;
- mid, sum:real;
- begin
- clrscr;
- randomize;
- write('Enter size of array: ');
- readln(arrSize);
- assign(iFile, 'input');
- rewrite(iFile);
- for i:=1 to arrSize*arrSize do
- write(iFile, random(26)+1);
- reset(iFile);
- setLength(arr, arrSize, arrSize);
- i:=0;
- j:=0;
- while not eof(iFile) do
- begin
- read(iFile, arr[i, j]);
- if i=j then
- textColor(lightRed)
- else
- textColor(white);
- write(arr[i, j]:3);
- j:=j+1;
- if j=arrSize then
- begin
- sum:=0;
- for innerJ:=0 to arrSize-1 do
- sum:=sum+arr[i, innerJ];
- mid:=sum/arrSize;
- arr[i, i]:=mid;
- i:=i+1;
- j:=0;
- writeln;
- end;
- end;
- close(iFile);
- writeln;
- assign(oFile, 'Output');
- rewrite(oFile);
- for i:=0 to arrSize-1 do
- begin
- for j:=0 to arrSize-1 do
- begin
- write(oFile, arr[i, j]);
- if i=j then
- textColor(lightRed)
- else
- textColor(white);
- write(arr[i, j]:4:2, ' ');
- end;
- writeln;
- end;
- close(oFile);
- arr:=nil;
- textColor(white);
- end.
Объяснение кода листинга программы
В этом коде выполняется замена элементов главной диагонали матрицы средним арифметическим других элементов данной строки.
- Объявлены следующие переменные: arr - двумерный массив, содержащий элементы исходной матрицы; i, j, innerJ, arrSize - целочисленные переменные для обозначения индексов элементов матрицы; iFile, oFile - файловые переменные для чтения и записи элементов матрицы; mid, sum - переменные для хранения суммы элементов строки и среднего значения; textColor - функция для изменения цвета текста на светло-красный (lightRed) или белый (white).
- Задается размер матрицы вводом с клавиатуры и сохраняется в переменной arrSize.
- Открывается файл iFile для чтения элементов матрицы.
- В цикле заполняются все элементы матрицы случайными числами и записываются в файл iFile.
- Цикл считывания элементов матрицы из файла iFile и их вывода на экран. Если индексы i и j совпадают, то цвет текста меняется на светло-красный и выводится элемент матрицы mid с тремя знаками после запятой. Если индексы i и j не совпадают, то цвет текста меняется на белый и выводится элемент матрицы arr[i, j] с тремя знаками после запятой. После каждой итерации цикла значение j увеличивается на 1.
- Если значение j становится равным размерности матрицы, то выполняется цикл суммирования элементов текущей строки и вычисления среднего значения. Затем значение i увеличивается на 1, значение j сбрасывается на 0 и выполняется переход к следующей строке матрицы.
- После завершения цикла считывания элементов матрицы, закрывается файл iFile.
- Открывается файл oFile для записи элементов матрицы.
- В цикле записываются все элементы матрицы в файл oFile. Если индексы i и j совпадают, то цвет текста меняется на светло-красный и выводится элемент матрицы mid с четырьмя знаками после запятой и пробелом. Если индексы i и j не совпадают, то цвет текста меняется на белый и выводится элемент матрицы arr[i, j] с четырьмя знаками после запятой, пробелом и символом табуляции. После каждой итерации цикла значение j увеличивается на 1.
- После завершения цикла записи элементов матрицы, закрывается файл oFile.
- Переменная arr освобождается, и цвет текста меняется на белый.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д