Заменить элементы главной диагонали матрицы средним арифметическим других элементов данной строки - 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.

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

В этом коде выполняется замена элементов главной диагонали матрицы средним арифметическим других элементов данной строки.

  1. Объявлены следующие переменные: arr - двумерный массив, содержащий элементы исходной матрицы; i, j, innerJ, arrSize - целочисленные переменные для обозначения индексов элементов матрицы; iFile, oFile - файловые переменные для чтения и записи элементов матрицы; mid, sum - переменные для хранения суммы элементов строки и среднего значения; textColor - функция для изменения цвета текста на светло-красный (lightRed) или белый (white).
  2. Задается размер матрицы вводом с клавиатуры и сохраняется в переменной arrSize.
  3. Открывается файл iFile для чтения элементов матрицы.
  4. В цикле заполняются все элементы матрицы случайными числами и записываются в файл iFile.
  5. Цикл считывания элементов матрицы из файла iFile и их вывода на экран. Если индексы i и j совпадают, то цвет текста меняется на светло-красный и выводится элемент матрицы mid с тремя знаками после запятой. Если индексы i и j не совпадают, то цвет текста меняется на белый и выводится элемент матрицы arr[i, j] с тремя знаками после запятой. После каждой итерации цикла значение j увеличивается на 1.
  6. Если значение j становится равным размерности матрицы, то выполняется цикл суммирования элементов текущей строки и вычисления среднего значения. Затем значение i увеличивается на 1, значение j сбрасывается на 0 и выполняется переход к следующей строке матрицы.
  7. После завершения цикла считывания элементов матрицы, закрывается файл iFile.
  8. Открывается файл oFile для записи элементов матрицы.
  9. В цикле записываются все элементы матрицы в файл oFile. Если индексы i и j совпадают, то цвет текста меняется на светло-красный и выводится элемент матрицы mid с четырьмя знаками после запятой и пробелом. Если индексы i и j не совпадают, то цвет текста меняется на белый и выводится элемент матрицы arr[i, j] с четырьмя знаками после запятой, пробелом и символом табуляции. После каждой итерации цикла значение j увеличивается на 1.
  10. После завершения цикла записи элементов матрицы, закрывается файл oFile.
  11. Переменная arr освобождается, и цвет текста меняется на белый.

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


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

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

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