Если в последовательности имеются равные элементы, изменить значения всех её элементов по правилу - PascalABC.NET

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

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

Разработать алгоритм и программу нисходящим способом, предполагая заданной матрицу А из 5 строк и 5 столбцов или одномерные массивы, указанной длины. Если в последовательности C1, C2, ... C(n) имеются равные элементы, изменить значения всех её элементов по правилу C(i) = C(i) + A (j,i). Прогу писали раньше, но сейчас её надо переделать для Procedure, одну ли несколько выделить. Попытался написать, но вот что то не получается, помогите исправить, или скажите, как.
Листинг программы
  1. const n = 3;
  2. type matr = array[1..n, 1..n] of real;
  3. type mas = array[1..n] of real;
  4. procedure viyavlenie(A: matr; C: mas; var k : integer);
  5. var
  6. i, j: integer;
  7. begin
  8. k := 0;
  9. for i := 1 to n - 1 do
  10. for j := i + 1 to n do
  11. if C[j] = C[i] then
  12. k := 1;
  13. end;
  14. procedure izmenenie_matrici(A: matr; C: mas; var C: mas);
  15. var
  16. i, j: integer;
  17. begin
  18. writeln('В массиве имеются одинаковые элементы');
  19. for i := 1 to n do
  20. begin
  21. C[i] := C[i] + A[i, i];
  22. write(C[i]:4);
  23. end;
  24. end;
  25. var
  26. A: matr;
  27. C: mas;
  28. i, j, k: integer;
  29. begin
  30. writeln('Исходный массив C:');
  31. for i := 1 to n do
  32. begin
  33. write(C[i]:8);
  34. readln(C[i]);
  35. end;
  36. writeln;
  37. writeln('Исходная матрица А:');
  38. for i := 1 to n do
  39. begin
  40. for j := 1 to n do
  41. begin
  42. write(A[i, j]:8);
  43. readln(A[i, j]);
  44. end;
  45. writeln;
  46. end;
  47. viyavlenie(A);
  48. if k = 0 then writeln('В массиве одинаковых элементов нет') else
  49. izmenenie_matrici(A);
  50. end.

Решение задачи: «Если в последовательности имеются равные элементы, изменить значения всех её элементов по правилу»

textual
Листинг программы
  1. const n=5;  //по условию
  2. type matr=array[1..n,1..n] of integer;//искать одинаковые в вещественных массивах это
  3.                                       //занятие мало перспективное
  4. type mas=array[1..n] of integer;
  5. procedure massiv(var c:mas);
  6. var i:byte;
  7. begin
  8. writeln('Массив С');
  9. for i:=1 to n do
  10.  begin
  11.   c[i]:=random(10);
  12.   write(c[i]:3);
  13.  end;
  14. writeln;
  15. end;
  16. procedure matrica(var a:matr);
  17. var i,j:byte;
  18. begin
  19. writeln('Матрица А');
  20. for i:=1 to n do
  21.  begin
  22.   for j:=1 to n do
  23.    begin
  24.     a[i,j]:=10+random(50);
  25.     write(a[i,j]:3);
  26.    end;
  27.   writeln;
  28.  end;
  29. end;
  30. procedure viyavlenie(c:mas;var k:byte);
  31. var i,j:integer;
  32. begin
  33. k:=0;
  34. i:=1;
  35. while(i<n)and(k=0) do
  36.  begin
  37.   j:=i+1;
  38.   while(j<=n)and(k=0) do
  39.   if c[j]=c[i] then k := 1
  40.   else inc(j);
  41.   if k=0 then inc(i);
  42.  end;
  43. end;
  44. procedure izmenenie_massiva(a:matr;var c:mas);
  45. var i:integer;
  46. begin
  47. writeln('В массиве имеются одинаковые элементы');
  48. for i:= 1 to n do
  49.  begin
  50.   c[i]:=c[i]+a[i,i];
  51.   write(c[i]:4);
  52.  end;
  53. end;
  54.  
  55. var a:matr;
  56.     c:mas;
  57.     k:byte;
  58. begin
  59. randomize;
  60. massiv(c);
  61. matrica(a);
  62. viyavlenie(c,k);
  63. if k = 0 then  writeln('В массиве одинаковых элементов нет') else
  64. izmenenie_massiva(a,c);
  65. end.

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

  1. Объявлены две константы: n = 5 (размер массива) и T = array[1..n,1..n] of integer (тип матрицы).
  2. Создаются две переменные: mas (массив) и matr (матрица).
  3. В процедуре massiv создается массив c размером n и заполняется случайными числами от 0 до 9.
  4. В процедуре matrica создается матрица a размером n x n и заполняется случайными числами от 10 до 50.
  5. В процедуре viyavlenie осуществляется поиск одинаковых элементов в массиве c. Переменная k инициализируется нулем, а переменные i и j инициализируются единицей.
  6. Пока i меньше n и k равно нулю, выполняется внутренний цикл, который ищет элемент c[j], равный c[i]. Если такой элемент найден, k изменяется на единицу.
  7. Если k остается равным нулю после внутреннего цикла, увеличивается значение i.
  8. Если k равно единице, вызывается процедура izmenenie_massiva, которая изменяет значения элементов массива c, добавляя к ним соответствующие значения из матрицы a.
  9. Если k равно нулю, выводится сообщение В массиве одинаковых элементов нет.
  10. В основной части программы создаются переменные a и c, инициализируются нулевыми значениями, а затем вызываются функции massiv, matrica и viyavlenie.
  11. Если k равно нулю, выводится сообщение В массиве одинаковых элементов нет. В противном случае вызывается функция izmenenie_massiva.

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


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

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

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

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

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

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