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

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

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

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

решенная

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

нужно

написать на паскале, но нам его не объясняли(а объясняли на фортране, собственно на нем то я и решил ее). Собственно вот сам вопрос задачи: Подсчитать как изменится средне арифметическое элементов матрицы, если во всех столбцах с номерами большими, чем номер столбца с макс. количеством отрицательных элементов, заменить все отр. элементы их модулями! Выкладываю картинки с хостинга ниже, а также код фортрана, может кто-то глянет, что не понятно будет) Сам решать пробовал, до сих пор сижу и читаю, остановился пока на 1 подпрограмме, может у вас быстрее получится)
Листинг программы
  1. dimension a(5,5), x(5), c(5)
  2. real a,p,t,c
  3. integer i,j,x
  4. logical b
  5. data a /2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 /
  6. write(*,16) ((a(i,j),j=1,5),i=1,5)
  7. 16 format (2x, 'a=', 5(f5.1))
  8. write(*,*) 'c'
  9. read(*,*) c
  10. write(*,*) 'P,T(P<T)'
  11. read(*,*) P,T
  12. call pp1(c,p,t,5,b)
  13. if(.NOT.B) then
  14. write(*,*) 'vipolnyaetsya'
  15. call pp2 (A,5,x)
  16. write(*,15)(x(i),i=1,5)
  17. 15 format (1x,'x=', i4)
  18. else
  19. write(*,*) 'ne vipolnyaetsya'
  20. end if
  21. end
  22. subroutine pp1(b1,c1,c2,n,flag)
  23. dimension b1(n)
  24. real b1,c1,c2
  25. logical flag
  26. flag=.true.
  27. i=1
  28. do while((flag).AND. (i<=n))
  29. if((b1(i)<c1).or.(b1(i)>c2)) then
  30. flag=.false.
  31. end if
  32. i=i+1
  33. end do
  34. end
  35. subroutine pp2(a1,n,x1)
  36. dimension a1(n,n), x1(n)
  37. real a1
  38. integer x1
  39. do i=1,5,1
  40. x1(i)=0
  41. end do
  42. do j=1,5,1
  43. do i=1,5,1
  44. x1(j)=x1(j) +a1(j,i)
  45. end do
  46. end do
  47. end
Спасибо вам огромное заранее, даже за то, что прочитали это)

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

textual
Листинг программы
  1. const m=5; n=5;
  2. type TMatrix = array [1..m,1..n] of Integer;
  3. procedure mInit(var a: TMatrix);
  4. var i, j: Integer;
  5. begin
  6.   for i:=1 to m do for j:=1 to n do a[i,j]:=-99+Random(199);
  7. end;
  8. procedure mWrite(const a: TMatrix; s: String);
  9. var i, j: Integer;
  10. begin
  11.   WriteLn(s);
  12.   for i:=1 to m do begin
  13.     for j:=1 to n do Write(a[i,j]:4); WriteLn;
  14.   end;
  15. end;
  16. function mAvg(const a: TMatrix): Real;
  17. var i, j: Integer; r: Real;
  18. begin
  19.   r:=0; for i:=1 to m do for j:=1 to n do r:=r+a[i,j];
  20.   mAvg:=r/m/n;
  21. end;
  22. procedure mRepl(var a: TMatrix);
  23. var i, j, k, mk, jk: Integer;
  24. begin
  25.   mk:=0; jk:=n+1;
  26.   for j:=1 to n do begin
  27.     k:=0; for i:=1 to m do if a[i,j]<0 then Inc(k);
  28.     if mk<k then begin jk:=j; mk:=k; end;
  29.   end;
  30.   WriteLn('Столбец: ',jk);
  31.   for j:=jk to n do
  32.     for i:=1 to m do if a[i,j]<0 then a[i,j]:=-a[i,j];
  33. end;
  34. var a: TMatrix;
  35. begin
  36.   Randomize;
  37.   mInit(a); mWrite(a,'A ='); WriteLn('Среднее: ',mAvg(a):0:2);
  38.   mRepl(a); mWrite(a,'A''='); WriteLn('Среднее: ',mAvg(a):0:2);
  39. 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

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

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

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