Если в последовательности имеются равные элементы, изменить значения всех её элементов по правилу - 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.

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

  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
Похожие ответы