Vladimir_S
Ученик
- Регистрация
- 27 Авг 2008
- Сообщения
- 27,807
- Реакции
- 1,025
- Баллы
- 0
Прервана, потому что после оператора Goto v1 не поставлен разделитель. Правильная версия:
Здесь кое-что исправлено:
1. Изменен тип переменной а - незачем ей быть вещественной, если речь идет о числе монет, которое может быть только целым неотрицательным.
2. Убран ReadLn в конце - он не нужен, поскольку программа и без того зациклена на оператор ввода.
Ну а теперь - самое главное. Я НАСТОЯТЕЛЬНО рекомендую, осваивая программирование, ЗАБЫТЬ об операторе GOTO и переходах по меткам. Работа с GOTO - сверхдурной стиль программирования. Это не мои измышления, это давно и прочно принятая у программистов концепция. Программы с GOTO презрительно называют "лапшой".
Посмотрите, если интересно, моё решение Вашей задачи. Внесены следующие изменения:
1. Убран GOTO.
2. Предусмотрен выход из бесконечного цикла.
3. Надписи, во избежание проблем с кодировкой, сделаны на английском языке.
Код:
LABEL v1;
VAR a :Integer;
BEGIN
writeln ('Ќ*ЁиЁ зЁб«® ¬®¦Ґв вл ўл©Ја*Ґи!!!');
v1: ReadLn (a);
if a=73 then writeln ('’л Ї®Ї*«!!!ЏаЁ§ вў®©')
else writeln ('’л *Ґ Ї®Ї*«!!! Џ®Їа®Ўг© Ґйс г вҐЎп ®Ўп§*⥫м*® Ї®«гзЁбп!');
GOTO v1;
END.
1. Изменен тип переменной а - незачем ей быть вещественной, если речь идет о числе монет, которое может быть только целым неотрицательным.
2. Убран ReadLn в конце - он не нужен, поскольку программа и без того зациклена на оператор ввода.
Ну а теперь - самое главное. Я НАСТОЯТЕЛЬНО рекомендую, осваивая программирование, ЗАБЫТЬ об операторе GOTO и переходах по меткам. Работа с GOTO - сверхдурной стиль программирования. Это не мои измышления, это давно и прочно принятая у программистов концепция. Программы с GOTO презрительно называют "лапшой".
Посмотрите, если интересно, моё решение Вашей задачи. Внесены следующие изменения:
1. Убран GOTO.
2. Предусмотрен выход из бесконечного цикла.
3. Надписи, во избежание проблем с кодировкой, сделаны на английском языке.
Код:
VAR
a:Word;
c:Char;
BEGIN
c:='Y';
Writeln('Try to guess the number of coins - maybe you will win!!!');
Repeat
Write('Number of coins = '); ReadLn(a);
if a=73 then
writeln('You won!!! The prize is yours!')
else
begin
writeln('You missed!!! Try again and you will have the success!');
Write('Next attempt (Y/N)? '); Readln(c);
end;
Until (a=73) or (c='n') or (c='N');
if a=73 then readln;
END.