Если в последовательности имеются равные элементы, изменить значения всех её элементов по правилу - PascalABC.NET
Формулировка задачи:
Разработать алгоритм и программу нисходящим способом, предполагая заданной матрицу А из 5 строк и 5 столбцов или одномерные массивы, указанной длины. Если в последовательности C1, C2, ... C(n) имеются равные элементы, изменить значения всех её элементов по правилу C(i) = C(i) + A (j,i). Прогу писали раньше, но сейчас её надо переделать для Procedure, одну ли несколько выделить. Попытался написать, но вот что то не получается, помогите исправить, или скажите, как.
Решение задачи: «Если в последовательности имеются равные элементы, изменить значения всех её элементов по правилу»
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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д