• Помогите, Информатика
    Создается программа на 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.

Ответы 1

  • В чём ошибка

    Ошибка была в том, что циклы выполнялись бесконечно т.к. их условие было всегда истинно. Исправить ошибку можно вычитанием из сдачи значения купюры.

    Правильный вариант программы:

    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

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years