Если в последовательности имеются равные элементы, изменить значения всех её элементов по правилу - PascalABC.NET
Формулировка задачи:
Разработать алгоритм и программу нисходящим способом, предполагая заданной матрицу А из 5 строк и 5 столбцов или одномерные массивы, указанной длины. Если в последовательности C1, C2, ... C(n) имеются равные элементы, изменить значения всех её элементов по правилу C(i) = C(i) + A (j,i). Прогу писали раньше, но сейчас её надо переделать для Procedure, одну ли несколько выделить. Попытался написать, но вот что то не получается, помогите исправить, или скажите, как.
Листинг программы
- const n = 3;
- type matr = array[1..n, 1..n] of real;
- type mas = array[1..n] of real;
- procedure viyavlenie(A: matr; C: mas; var k : integer);
- var
- i, j: integer;
- begin
- k := 0;
- for i := 1 to n - 1 do
- for j := i + 1 to n do
- if C[j] = C[i] then
- k := 1;
- end;
- procedure izmenenie_matrici(A: matr; C: mas; var C: mas);
- var
- i, j: integer;
- begin
- writeln('В массиве имеются одинаковые элементы');
- for i := 1 to n do
- begin
- C[i] := C[i] + A[i, i];
- write(C[i]:4);
- end;
- end;
- var
- A: matr;
- C: mas;
- i, j, k: integer;
- begin
- writeln('Исходный массив C:');
- for i := 1 to n do
- begin
- write(C[i]:8);
- readln(C[i]);
- end;
- writeln;
- writeln('Исходная матрица А:');
- for i := 1 to n do
- begin
- for j := 1 to n do
- begin
- write(A[i, j]:8);
- readln(A[i, j]);
- end;
- writeln;
- end;
- viyavlenie(A);
- if k = 0 then writeln('В массиве одинаковых элементов нет') else
- izmenenie_matrici(A);
- end.
Решение задачи: «Если в последовательности имеются равные элементы, изменить значения всех её элементов по правилу»
textual
Листинг программы
- const n=5; //по условию
- type matr=array[1..n,1..n] of integer;//искать одинаковые в вещественных массивах это
- //занятие мало перспективное
- type mas=array[1..n] of integer;
- procedure massiv(var c:mas);
- var i:byte;
- begin
- writeln('Массив С');
- for i:=1 to n do
- begin
- c[i]:=random(10);
- write(c[i]:3);
- end;
- writeln;
- end;
- procedure matrica(var a:matr);
- var i,j:byte;
- begin
- writeln('Матрица А');
- for i:=1 to n do
- begin
- for j:=1 to n do
- begin
- a[i,j]:=10+random(50);
- write(a[i,j]:3);
- end;
- writeln;
- end;
- end;
- procedure viyavlenie(c:mas;var k:byte);
- var i,j:integer;
- begin
- k:=0;
- i:=1;
- while(i<n)and(k=0) do
- begin
- j:=i+1;
- while(j<=n)and(k=0) do
- if c[j]=c[i] then k := 1
- else inc(j);
- if k=0 then inc(i);
- end;
- end;
- procedure izmenenie_massiva(a:matr;var c:mas);
- var i:integer;
- begin
- writeln('В массиве имеются одинаковые элементы');
- for i:= 1 to n do
- begin
- c[i]:=c[i]+a[i,i];
- write(c[i]:4);
- end;
- end;
- var a:matr;
- c:mas;
- k:byte;
- begin
- randomize;
- massiv(c);
- matrica(a);
- viyavlenie(c,k);
- if k = 0 then writeln('В массиве одинаковых элементов нет') else
- izmenenie_massiva(a,c);
- end.
Объяснение кода листинга программы
- Объявлены две константы: n = 5 (размер массива) и T = array[1..n,1..n] of integer (тип матрицы).
- Создаются две переменные: mas (массив) и matr (матрица).
- В процедуре massiv создается массив c размером n и заполняется случайными числами от 0 до 9.
- В процедуре matrica создается матрица a размером n x n и заполняется случайными числами от 10 до 50.
- В процедуре viyavlenie осуществляется поиск одинаковых элементов в массиве c. Переменная k инициализируется нулем, а переменные i и j инициализируются единицей.
- Пока i меньше n и k равно нулю, выполняется внутренний цикл, который ищет элемент c[j], равный c[i]. Если такой элемент найден, k изменяется на единицу.
- Если k остается равным нулю после внутреннего цикла, увеличивается значение i.
- Если k равно единице, вызывается процедура izmenenie_massiva, которая изменяет значения элементов массива c, добавляя к ним соответствующие значения из матрицы a.
- Если k равно нулю, выводится сообщение
В массиве одинаковых элементов нет
. - В основной части программы создаются переменные a и c, инициализируются нулевыми значениями, а затем вызываются функции massiv, matrica и viyavlenie.
- Если k равно нулю, выводится сообщение
В массиве одинаковых элементов нет
. В противном случае вызывается функция izmenenie_massiva.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д