Подсчитать как изменится средне арифметическое элементов матрицы - 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.
Объяснение кода листинга программы
- const m=5; n=5; — объявляются константы m и n, которые равны 5
- type TMatrix = array [1..m,1..n] of Integer; — объявляется тип данных TMatrix, который представляет собой массив целых чисел размером m на n
- 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
- 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;
- 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
- 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. Результат выводится на экран с точностью до двух знаков после запятой - var a: TMatrix; — объявляется переменная 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; — выполняется цикл, в котором вызываются процедуры mInit, mWrite и mRepl для инициализации, вывода и повторной инициализации матрицы a. После выполнения всех действий переменная a перезаписывается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д