Подсчитать как изменится средне арифметическое элементов матрицы - Turbo Pascal

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

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

Здравствуйте, ситуация такая: имеется

решенная

задача на листочке,

нужно

написать на паскале, но нам его не объясняли(а объясняли на фортране, собственно на нем то я и решил ее). Собственно вот сам вопрос задачи: Подсчитать как изменится средне арифметическое элементов матрицы, если во всех столбцах с номерами большими, чем номер столбца с макс. количеством отрицательных элементов, заменить все отр. элементы их модулями! Выкладываю картинки с хостинга ниже, а также код фортрана, может кто-то глянет, что не понятно будет) Сам решать пробовал, до сих пор сижу и читаю, остановился пока на 1 подпрограмме, может у вас быстрее получится)
Спасибо вам огромное заранее, даже за то, что прочитали это)

Решение задачи: «Подсчитать как изменится средне арифметическое элементов матрицы»

textual
Листинг программы
const m=5; n=5;
type TMatrix = array [1..m,1..n] of Integer;
procedure mInit(var a: TMatrix);
var i, j: Integer;
begin
  for i:=1 to m do for j:=1 to n do a[i,j]:=-99+Random(199);
end;
procedure mWrite(const a: TMatrix; s: String);
var i, j: Integer;
begin
  WriteLn(s);
  for i:=1 to m do begin
    for j:=1 to n do Write(a[i,j]:4); WriteLn;
  end;
end;
function mAvg(const a: TMatrix): Real;
var i, j: Integer; r: Real;
begin
  r:=0; for i:=1 to m do for j:=1 to n do r:=r+a[i,j];
  mAvg:=r/m/n;
end;
procedure mRepl(var a: TMatrix);
var i, j, k, mk, jk: Integer;
begin
  mk:=0; jk:=n+1;
  for j:=1 to n do begin
    k:=0; for i:=1 to m do if a[i,j]<0 then Inc(k);
    if mk<k then begin jk:=j; mk:=k; end;
  end;
  WriteLn('Столбец: ',jk);
  for j:=jk to n do
    for i:=1 to m do if a[i,j]<0 then a[i,j]:=-a[i,j];
end;
var a: TMatrix;
begin
  Randomize;
  mInit(a); mWrite(a,'A ='); WriteLn('Среднее: ',mAvg(a):0:2);
  mRepl(a); mWrite(a,'A''='); WriteLn('Среднее: ',mAvg(a):0:2);
end.

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

  1. const m=5; n=5; — объявляются константы m и n, которые равны 5
  2. type TMatrix = array [1..m,1..n] of Integer; — объявляется тип данных TMatrix, который представляет собой массив целых чисел размером m на n
  3. procedure mInit(var a: TMatrix); — объявляется процедура mInit, которая принимает аргумент a типа TMatrix и выполняет следующие действия: — for i:=1 to m do for j:=1 to n do a[i,j]:=-99+Random(199); — в цикле выполняется итерация по всем элементам матрицы a от i=1 до m и от j=1 до n. Каждый элемент a[i,j] присваивается случайное число от -99 до 199
  4. procedure mWrite(const a: TMatrix; s: String); — объявляется процедура mWrite, которая принимает два аргумента: const a: TMatrix и s: String. Она выполняет следующие действия: — WriteLn(s); — выводится строка s на экран — for i:=1 to m do begin — for j:=1 to n do Write(a[i,j]:4); WriteLn; — выполняется итерация по всем элементам матрицы a от i=1 до m и от j=1 до n. Каждый элемент a[i,j] выводится на экран в формате 4-х знаков после запятой — end; — end;
  5. function mAvg(const a: TMatrix): Real; — объявляется функция mAvg, которая принимает аргумент const a: TMatrix и возвращает значение типа Real. Она выполняет следующие действия: — var i, j: Integer; r: Real; — объявляются переменные i, j и r типа Integer и Real соответственно — r:=0; for i:=1 to m do for j:=1 to n do r:=r+a[i,j]; — выполняется итерация по всем элементам матрицы a от i=1 до m и от j=1 до n. Сумма всех элементов матрицы вычисляется и сохраняется в переменной r — mAvg:=r/m/n; — вычисляется среднее арифметическое всех элементов матрицы и сохраняется в переменной mAvg
  6. procedure mRepl(var a: TMatrix); — объявляется процедура mRepl, которая принимает аргумент var a: TMatrix и выполняет следующие действия: — var a: TMatrix; — объявляется переменная a типа TMatrix — Randomize; — вызывается функция Randomize для инициализации генератора случайных чисел — mInit(a); — вызывается процедура mInit для инициализации матрицы a — mWrite(a,'A ='); WriteLn('Среднее: ',mAvg(a):0:2); — выводится строка A = и вычисляется среднее арифметическое всех элементов матрицы a. Результат выводится на экран с точностью до двух знаков после запятой — mRepl(a); — вызывается процедура mRepl для повторной инициализации матрицы a — mWrite(a,'A''='); WriteLn('Среднее: ',mAvg(a):0:2); — выводится строка A''= и вычисляется среднее арифметическое всех элементов матрицы a. Результат выводится на экран с точностью до двух знаков после запятой
  7. var a: TMatrix; — объявляется переменная a типа TMatrix
  8. begin — Randomize; — mInit(a); — mWrite(a,'A ='); WriteLn('Среднее: ',mAvg(a):0:2); — mRepl(a); — mWrite(a,'A''='); WriteLn('Среднее: ',mAvg(a):0:2); end; — выполняется цикл, в котором вызываются процедуры mInit, mWrite и mRepl для инициализации, вывода и повторной инициализации матрицы a. После выполнения всех действий переменная a перезаписывается

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


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

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

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