Заменить элементы главной диагонали матрицы средним арифметическим других элементов данной строки - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Данный файл содержит элементы двумерного массива. Создать новый файл с входного, заменив элементы главной диагонали средним арифметическим других элементов данной строки. Вот такое вот задание, может болит голова или я дурак, но не могу написать код.

Решение задачи: «Заменить элементы главной диагонали матрицы средним арифметическим других элементов данной строки»

textual
Листинг программы
  1. uses crt;
  2.  
  3. var arr:array [,] of real;
  4.     i, j, innerJ, arrSize:integer;
  5.     iFile, oFile:file of real;
  6.     mid, sum:real;
  7.  
  8. begin
  9.   clrscr;
  10.   randomize;
  11.  
  12.   write('Enter size of array: ');
  13.   readln(arrSize);
  14.  
  15.   assign(iFile, 'input');
  16.   rewrite(iFile);
  17.  
  18.   for i:=1 to arrSize*arrSize do
  19.     write(iFile, random(26)+1);
  20.  
  21.   reset(iFile);
  22.   setLength(arr, arrSize, arrSize);
  23.   i:=0;
  24.   j:=0;
  25.  
  26.   while not eof(iFile) do
  27.     begin
  28.       read(iFile, arr[i, j]);
  29.      
  30.       if i=j then
  31.         textColor(lightRed)
  32.       else
  33.         textColor(white);
  34.        
  35.       write(arr[i, j]:3);
  36.       j:=j+1;
  37.      
  38.       if j=arrSize then
  39.         begin
  40.           sum:=0;
  41.          
  42.           for innerJ:=0 to arrSize-1 do
  43.             sum:=sum+arr[i, innerJ];
  44.              
  45.           mid:=sum/arrSize;
  46.          
  47.           arr[i, i]:=mid;
  48.        
  49.           i:=i+1;
  50.           j:=0;
  51.           writeln;
  52.         end;
  53.     end;
  54.    
  55.   close(iFile);
  56.  
  57.   writeln;
  58.  
  59.   assign(oFile, 'Output');
  60.   rewrite(oFile);
  61.  
  62.   for i:=0 to arrSize-1 do
  63.     begin
  64.       for j:=0 to arrSize-1 do
  65.         begin
  66.           write(oFile, arr[i, j]);
  67.          
  68.           if i=j then
  69.             textColor(lightRed)
  70.           else
  71.             textColor(white);
  72.          
  73.           write(arr[i, j]:4:2, '  ');
  74.         end;
  75.       writeln;
  76.     end;
  77.  
  78.   close(oFile);
  79.  
  80.   arr:=nil;
  81.  
  82.   textColor(white);
  83. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы