Разработать программу, выделив процедуры - Pascal (80424)

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

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

Если в прямоугольной матрице все суммы элементов строк попадают на заданный отрезок, определить номер строки с максимальной суммой элементов, иначе определить номера строк, сумма элементов которых не попала на заданный отрезок. Проверьте пожалуйста:
Листинг программы
  1. type
  2. matr=array [1..10,1..10] of real;
  3. mass=array [1..10] of real;
  4. inmass=array [1..10] of integer;
  5. var
  6. i,j,k,n,m:integer;
  7. A:matr; s:mass;L:inmass;
  8. b:boolean;
  9. xn,xk:real;
  10. procedure VVOD(n,m:integer; var A:matr);
  11. var
  12. i, j:integer;
  13. begin
  14. for i:=1 to n do
  15. for j:=1 to m do
  16. readln(A[i,j]);
  17. end;
  18. procedure VIVOD(n,m:integer; var A:matr);
  19. var
  20. i, j:integer;
  21. begin
  22. for i:=1 to n do
  23. begin
  24. for j:=1 to m do
  25. write(A[i,j]:6:2);
  26. writeln;
  27. end;
  28. end;
  29. procedure Sum(A:matr;var S:mass);
  30. var i,j:integer;
  31. ss:real;
  32. begin
  33. for i:=1 to n do begin
  34. ss:=0;
  35. for j:=1 to m do
  36. ss:=ss+a[i,j];
  37. s[i]:=ss;
  38. end;
  39. end;
  40. procedure InArea(S:mass;xn,xk:real; var L:inmass; var k:integer;var b:boolean);
  41. var i,j:integer;
  42. begin
  43. for i:=1 to n do
  44. L[i]:=0;
  45. if (s[i]<xn) or (s[i]>xk) then
  46. begin
  47. k:=k+1;
  48. L[k]:=i;
  49. end;
  50. if k=0 then b:=true else b:=false;
  51. end;
  52. Function Maximum(s:mass):integer;
  53. var max:real;
  54. i,k:integer;
  55. begin
  56. k:=1;
  57. max:=s[1];
  58. for i:=2 to n do
  59. if s[i]>max then begin
  60. max:=s[i];
  61. k:=i;
  62. end;
  63. maximum:=k;
  64. end;
  65. begin
  66. writeln('Введите размерность матрицы');
  67. readln(n,m);
  68. writeln('Введите матрицу А');
  69. VVOD(n,m,A);
  70. writeln('Матрица А');
  71. VIVOD(n,m,A);
  72. writeln('Введите границы отрезка');
  73. readln(xn,xk);
  74. Sum(A,s);
  75. InArea(S,xn,xk,L,k,b);
  76. if b then writeln('Номер строки с максимальной суммой элементов', Maximum(S):5)
  77. else begin
  78. writeln('Номера строк, сумма элементов которых не попала на заданный отрезок');
  79. for i:=1 to k do writeln(L[i]);
  80. end;
  81. readln;
  82. end.

Решение задачи: «Разработать программу, выделив процедуры»

textual
Листинг программы
  1. type matr=array [1..10,1..10] of real;
  2. procedure vvod(var x:matr;var n,m:integer);
  3. var i,j:integer;
  4. begin
  5. repeat
  6. write('Количество строк от 2 до 10 n=');
  7. readln(n);
  8. until n in [2..10];
  9. repeat
  10. write('Количество столбцов от 2 до 10 m=');
  11. readln(m);
  12. until m in [2..10];
  13. writeln('Введите элементы матрицы, действительные числа');
  14. for i:=1 to n do
  15. for j:=1 to m do
  16.  begin
  17.   write('el[',i,',',j,']=');
  18.   readln(X[i,j]);
  19.  end;
  20. cls;//очистим окно ввода
  21. writeln('Матрица');
  22. for i:=1 to n do
  23.  begin
  24.   for j:=1 to m do
  25.   write(x[i,j]:6:2);
  26.   writeln;
  27.  end;
  28. end;
  29.  
  30. procedure InArea(a:matr;n,m:integer;var xn,xk:real; var b:boolean);
  31. var i,j:integer;
  32.     s:real;
  33. begin
  34. repeat
  35. writeln('Введите границы отрезка');
  36. readln(xn,xk);
  37. until xk>xn;
  38. i:=1;
  39. b:=true;
  40. while(i<=n)and b do
  41.  begin
  42.   s:=0;
  43.   for j:=1 to m do
  44.   s:=s+a[i,j];
  45.   if(s<xn)or(s>xk)then b:=false
  46.   else i:=i+1;
  47.  end;
  48. end;
  49.  
  50. Function Maximum(a:matr;n,m:integer):integer;
  51. var s,max:real;
  52.     i,j,imax:integer;
  53. begin
  54. for i:=1 to n do
  55.  begin
  56.   s:=0;
  57.   for j:=1 to m do
  58.   s:=s+a[i,j];
  59.   if i=1 then
  60.    begin
  61.     max:=s;
  62.     imax:=1
  63.    end
  64.   else if s>max then
  65.    begin
  66.     max:=s;
  67.     imax:=i;
  68.    end;
  69.  end;
  70. Maximum:=imax;
  71. end;
  72.  
  73. procedure Nomera(a:matr;n,m:integer;xn,xk:real);
  74. var i,j:integer;
  75.     s:real;
  76. begin
  77. writeln('Номера строк, сумма в которых не попала в интервал [',xn:0:1,';',xk:0:1,']');
  78. for i:=1 to n do
  79.  begin
  80.   s:=0;
  81.   for j:=1 to m do
  82.   s:=s+a[i,j];
  83.   if(s<xn)or(s>xk)then write(i:3);
  84.  end;
  85. end;
  86.  
  87. var a:matr;
  88.     n,m:integer;
  89.     xn,xk:real;
  90.     b:boolean;
  91. begin
  92. vvod(a,n,m);
  93. InArea(a,n,m,xn,xk,b);
  94. if b then
  95.  begin
  96.   writeln('Суммы во всех строках попадают в интервал [',xn:0:1,';',xk:0:1,']');
  97.   write('Номер строки с максимальной суммой=',Maximum(a,n,m));
  98.  end
  99. else
  100.  begin
  101.   writeln('Суммы не во всех строках попадают в интервал [',xn:0:1,';',xk:0:1,']');
  102.   Nomera(a,n,m,xn,xk);
  103.  end;
  104. end.

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

  1. Объявляется тип данных matr, который представляет массив 10x10 вещественных чисел
  2. Объявляется процедура vvod с переменными x:matr, n:integer, m:integer
  3. Пользователю предлагается ввести количество строк для матрицы, пока не будет введено число от 2 до 10
  4. Пользователю предлагается ввести количество столбцов для матрицы, пока не будет введено число от 2 до 10
  5. Введение элементов для каждой строки и столбца матрицы
  6. Происходит очистка окна ввода
  7. Выводится матрица
  8. Объявляется процедура InArea с переменными a:matr, n:integer, m:integer, xn:real, xk:real, b:boolean
  9. Пользователю предлагается ввести границы отрезка, пока не будет введено xk больше xn
  10. Вычисляется сумма элементов в каждой строке матрицы и проверяется, попадает ли сумма в заданный интервал
  11. Объявляется функция Maximum с переменными a:matr, n:integer, m:integer:integer`
  12. Находится номер строки с максимальной суммой элементов
  13. Объявляется процедура Nomera с переменными a:matr, n:integer, m:integer, xn:real, xk:real
  14. Выводятся номера строк, сумма элементов в которых не попадает в заданный интервал
  15. Объявляются переменные a:matr, n:integer, m:integer, xn:real, xk:real, b:boolean
  16. Вызываются vvod и InArea для ввода матрицы и проверки суммы элементов
  17. В зависимости от результата проверки выводится информация о суммах в строках или номер строк.

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


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

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

8   голосов , оценка 4.375 из 5

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

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

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