Поменяйте местами последний элемент массива, кратный В и первый элемент кратный С - 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 может и не поменятся