Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 Подпрограммы.doc
Скачиваний:
25
Добавлен:
09.02.2015
Размер:
369.15 Кб
Скачать

Пример 5.2 выполнения задания

Составить функцию для вычисления среднего арифметического элементов одномерного массива. Использовать эту функцию для формирования массива средних арифметических значений элементов каждой строки матрицы A(m,n), m≤12, n≤11.

  1. program Fun1;

  2. {$APPTYPE CONSOLE}

  3. uses

  4. SysUtils;

  5. const

  6. mMax=12; nMax=11;

  7. type

  8. tStrk=array[1.. nMax] of Real;

  9. tMatr=array[1.. mMax] of tStrk;

  10. tStlb=array[1.. mMax] of Real;

  11. //Функция вычисления среднего арифметического

  12. //элементов одномерного массива

  13. function Sred(const B:tStrk; n:Integer):Real;

  14. var

  15. i:Integer;

  16. begin

  17. Result:=0;

  18. for i:=1 to n do

  19. Result:= Result+B[i];

  20. Result:= Result/n;

  21. end; //конец функции Sred

  22. var

  23. A: tMatr; //Массив исходной матрицы

  24. StrkA: tStrk; //Массив строки матрицы

  25. SredStrkA: tStlb; //Массив средних значений строк матрицы

  26. m,n,i,j:Integer;

  27. begin// РАЗДЕЛ ОПЕРАТОРОВ ПРОГРАММЫ

  28. WriteLn('Введите количество строк и столбцов');

  29. ReadLn(m,n);

  30. WriteLn('Введите матрицу по строкам');

  31. for i:=1 to m do

  32. begin

  33. for j:=1 to n do

  34. Read(a[i,j]);

  35. ReadLn;

  36. end;

  37. //Вычисление средних арифметических

  38. //значений в строках матрицы

  39. for i:=1 to m do

  40. SredStrkA[i]:=Sred(A[i],n); //Обращение к функции

  41. //Вывод матрицы по строкам и правее

  42. //каждой строки - её среднего арифметического

  43. WriteLn('Исходная матрица и средние арифметические');

  44. for i:=1 to m do

  45. begin

  46. for j:=1 to n do

  47. Write(a[i,j]:6:1,' '); //Вывод строки матрицы

  48. //Вывод её среднего арифметического

  49. WriteLn(' ', SredStrkA[i]:6:2);

  50. end;

  51. ReadLn;

  52. end.

Можно поставленную задачу решить и по-другому, если функция должна работать непосредственно с матрицей. Функция в этом случае возвращает сразу сформированный массив средних арифметических.

  1. program Fun1a;

  2. {$APPTYPE CONSOLE}

  3. uses

  4. SysUtils;

  5. const

  6. mMax=12; nMax=11;

  7. type

  8. tStrk=array[1.. nMax] of Real;

  9. tMatr=array[1.. mMax] of tStrk;

  10. tStlb=array[1.. mMax] of Real;

  11. //Функция вычисления среднего арифметического

  12. //элементов строк матрицы

  13. function Sred(const B: tMatr; m,n:Integer):tStlb;

  14. var

  15. i,j:Integer; S:Real;

  16. begin

  17. for i:=1 to m do

  18. begin

  19. S:=0;

  20. for j:=1 to n do

  21. S:= S +B[i,j];

  22. Sred[i]:=S/n

  23. end;

  24. end; //конец функцииSred

  25. var

  26. A:tMatr; //Массив исходной матрицы

  27. SredStrkA:tStlb; //Массив средних значений строк матрицы

  28. m,n,i,j:Integer;

  29. begin// РАЗДЕЛ ОПЕРАТОРОВ ПРОГРАММЫ

  30. WriteLn('Введите количество строк и столбцов');

  31. ReadLn(m,n);

  32. WriteLn('Введите матрицу по строкам');

  33. for i:=1 to m do

  34. begin

  35. for j:=1 to n do

  36. Read(a[i,j]);

  37. ReadLn;

  38. end;

  39. //Вычисление средних арифметических

  40. //значений в строках матрицы

  41. SredStrkA:=Sred(A,m,n);

  42. //Вывод матрицы по строкам и правее

  43. //каждой строки - её среднее арифметическое

  44. WriteLn('Исходная матрица и средние арифметические');

  45. for i:=1 to m do

  46. begin

  47. //Вывод строки матрицы

  48. for j:=1 to n do

  49. Write(a[i,j]:6:1,' ');

  50. //Вывод её среднего арифметического

  51. WriteLn(' ', SredStrkA[i]:6:2);

  52. end;

  53. ReadLn;

  54. end.