Поменяйте местами последний элемент массива, кратный В и первый элемент кратный С - Pascal

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

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

Создайте одномерный массив, поменяйте местами последний элемент кратный В и первый элемент кратный С. В и С вводятся с клавиатуры. Программа запускается и зависает после пересылки значений в процедуру lol, скорее всего в ней зацикливается.
type  omas = array[1..100] of integer;//описание массива
const  n = 5;//константа
var//описание глобальных переменных
  a: omas;//описание глобальных переменных
  b, c: integer;//описание глобальных переменных
procedure init(var a: omas; n: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    a[i] := random(100);//Вычисление
end;//конец процедуры
procedure print(var a: omas; n: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    write(a[i], ' ');//вывод
end;//конец процедуры
procedure lol(var a: omas; n, b, c: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i, x, y, z: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
  begin
    if (A[i] mod b) = 0 then begin//Условие (последний элемент кратный b)
      y := i;
    end;
    while z = 0 do 
    begin
      if (A[i] mod c) = 0 then //Условие (первый элемнт кратный c)
      begin
        c := i;
        z := 1;
      end;
    end;
  end;
  x := a[y]; a[y] := a[c]; a[c] := x;//Меняем местами элементы
end;//конец процедуры
begin//начало программы
  writeln('первый массив');//Вывод текста
  init(a, n);//Вызов процедуры и указание фактических параметров
  print(a, n);//Вызов процедуры и указание фактических параметров
  writeln;
  write('B=');
  readln(b);
  write('C=');
  readln(c);
  lol(a, n, b, c);//Вызов процедуры и указание фактических параметров
  print(a, n);//Вызов процедуры и указание фактических параметров
end.
Причина в 39 строке, т.е. в том месте где элементы меняются местами

Решение задачи: «Поменяйте местами последний элемент массива, кратный В и первый элемент кратный С»

textual
Листинг программы
while z = 0 do // вечный цикл
    begin
      if (A[i] mod c) = 0 then // т.к. Z может и не поменятся

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

10   голосов , оценка 4.2 из 5
Похожие ответы