Пишет: Ошибка. Программа завершена из за переполнения стека. Паскаль. Помогите,...

0 голосов
48 просмотров

Пишет: Ошибка. Программа завершена из за переполнения стека. Паскаль. Помогите, пожалуйста.
вот программа:
program Alisa_5;
const N=10;
var i: integer;
A: array [ 1 .. n] of integer;
procedure Sort (first,last: integer);
var x, y, m, c: integer;
begin
if first>=last then exit;
m:=a[(first+last) div 2];
x:=first;
y:=last;
repeat
while A[x] while A[y]>m do y:=y-1;
if X<=Y then <br> begin
c:=A[y];
A[y]:=A[x];
A[x]:= c;
X:=X+1;
Y:=Y-1;
Sort( First, x);
Sort (Last, y);
end;
until x>y
end;
begin
writeln('Массив: ');
For i:=1 to n do
begin
A[i]:= random(100);
write( A[i], ' , ');
end;
sort (1,n);
For i:= 1 to n do
write( A[i], ' ; ')
end.


Информатика (19 баллов) | 48 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

while A[x] while A[y]>m do y:=y-1; - эта строка - у тебя тут идет пока какой-то элемент выполнять цикл пока. И видимо на нем цикл крутится и не заканчивается вот тебе и ошибка

(2.5k баллов)
0

Спасибо!

0

Не за что. И запомни - если ошибка переполнение стека, то где-то цикл не прекращается

0

while A[x] // условие цикла всегда TRUE, вот и имеем бесконечный цикл. Ошибка переполнение стека - возникает далеко не только из-за вечного цикла, не стоит вводить в заблуждение.

0

Обычно из-за вечного цикла или очень долгого цикла (читать настолько долгого, что он вечный)