Заменить элементы главной диагонали матрицы средним арифметическим других элементов данной строки - 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 освобождается, и цвет текста меняется на белый.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д