Информатика создается программа на pascal которая с циклов выводит сдачу от числа s но числа не выводятся, где ошибка программа - program a_4; var s, k500, k100, k50, k10, k5, k1: integer; begin write ('а сколько у вас сдачи? '); write ('введите > > '); readln (s); while s> =500 do begin k500: = k500+1 end; while s> =100 do begin k100: =k100+1 end; while s> =50 do begin k50: =k50+1 end; while s> =10 do begin k10: = k10+1 end; while s> =5 do begin k5: = k5+1 end; while s> = 1 do begin k1: = k1+1 end; writeln ('итак, вот ваша сдача'); writeln ('купюр номиналом 500', k500); writeln ('купюр номиналом 100', k100); writeln ('купюр номиналом 50', k50); writeln ('монет номиналом 10', k10); writeln ('монет номиналом 5', k5); writeln ('монет номиналом 1', k1); end.
В чём ошибка
Ошибка была в том, что циклы выполнялись бесконечно т.к. их условие было всегда истинно. Исправить ошибку можно вычитанием из сдачи значения купюры.
Правильный вариант программы:
program a_4;
var s, k500, k100, k50, k10, k5, k1: integer;
begin
write ('А сколько у вас сдачи? ');
write ('Введите >> ');
readln (s);
while s>=500 do
begin
k500:= k500+1;
s:= s-500;
end;
while s>=100 do
begin
k100:=k100+1;
s:= s-100;
end;
while s>=50 do
begin
k50:=k50+1;
s:= s-50;
end;
while s>=10 do
begin
k10:= k10+1;
s:= s-10;
end;
while s>=5 do
begin
k5:= k5+1;
s:= s-5;
end;
while s>= 1 do
begin
k1:= k1+1;
s:= s-1;
end;
writeln ('Итак, вот ваша сдача');
writeln ('Купюр номиналом 500 ', k500);
writeln ('Купюр номиналом 100 ', k100);
writeln ('Купюр номиналом 50 ', k50);
writeln ('Монет номиналом 10 ', k10);
writeln ('Монет номиналом 5 ', k5);
writeln ('Монет номиналом 1 ', k1);
end.
Выполнено в PascalABC.NET