Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Pascal
Перезагрузить страницу Toys in case
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Southpaw Southpaw вне форума
Member
 
Сообщений: 93
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 20.05.2019
По умолчанию Toys in case - 07.06.2019, 22:28

casetoys.pas (Игрушки в ящике - Тесты - Аетерна).

Pascal Код:
procedure ending;
var c: char;
begin
 write ('Наконец, солдат увидел, какие красивые глаза у куклы. ');
 write ('Кукле тоже понравился солдат. ');
 write ('А медведю и слону стало скучно, и кукла с солдатом их подсадили. ');
 write ('Сами же они остались вдвоем - вместе даже в ящике не скучно!')
 readln (c);
end;

procedure more;
var c: char;
label back;
begin
 back: writeln ('И что?');
 writeln ('продолжить дальше - y');
 writeln ('перейти на концовку - n');
 case c of
  'y': exit;
  'n': ending
  else goto back;
 end;
end;

label beginning;
var c: char;
begin
 write ('* ИГРУШКИ В ЯЩИКЕ *');
 readln (c);
 write ('(старая сказка)');
 readln (c);
 write ('В одном ящике лежали старые игрушки. ');
 write ('Это были слон, медведь, солдат и кукла. ');
 write ('Им надоело сидеть в ящике. ');
 write ('Чтобы выйти из ящика, кто-то из них должен был подсадить остальных. ');
 write ('Но сам он должен был остаться в ящике. ');
 write ('И каждый раз повторялась одна и та же история.');
 readln (c);
 beginning: writeln ('Кукла: "В ящике останется слон. Он всё равно не имеет хобота".');
 writeln ('Слон: "Я найду хобот и убегу в Африку".');
 readln (c);
 more;
 writeln ('Слон: "В ящике останется медведь. Он всё равно не имеет уха".');
 writeln ('Медведь: "Я найду ухо и убегу в лес".');
 readln (c);
 more;
 writeln ('Медведь: "В ящике останется солдат. Он всё равно без ноги не может ходить".');
 writeln ('Солдат: "Я найду палку и сделаю из нее костыль".');
 readln (c);
 more;
 writeln ('Солдат: "В ящике останется кукла. Она всё равно одета в тряпье".');
 writeln ('Кукла: "Я пойду к портному и сошью себе новое платье".');
 readln (c);
 more;
 goto beginning;
 ending;
end.

После концовки оно опять продолжает. Что делать?
Ответить с цитированием
  (#2 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 97
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 04.03.2008
По умолчанию 08.06.2019, 19:36

Pascal Код:
var mstop: boolean;

procedure ending;
var c: char;
begin
 write ('Наконец, солдат увидел, какие красивые глаза у куклы. ');
 write ('Кукле тоже понравился солдат. ');
 write ('А медведю и слону стало скучно, и кукла с солдатом их подсадили. ');
 write ('Сами же они остались вдвоем - вместе даже в ящике не скучно!');
 readln (c);
end;

procedure more;
var c: char;
label back;
begin
 back: writeln ('И что?');
 writeln ('продолжить дальше - y');
 writeln ('перейти на концовку - n');
 readln(c);
 case c of
  'y': begin mstop:=false;exit  end;
  'n': begin mstop:=true;ending end;
  else goto back;
 end;
end;

label beginning;
var c: char;
begin
 write ('* ИГРУШКИ В ЯЩИКЕ *');
 readln (c);
 write ('(старая сказка)');
 readln (c);
 write ('В одном ящике лежали старые игрушки. ');
 write ('Это были слон, медведь, солдат и кукла. ');
 write ('Им надоело сидеть в ящике. ');
 write ('Чтобы выйти из ящика, кто-то из них должен был подсадить остальных. ');
 write ('Но сам он должен был остаться в ящике. ');
 write ('И каждый раз повторялась одна и та же история.');
 readln (c);
 beginning: writeln ('Кукла: "В ящике останется слон. Он всё равно не имеет хобота".');
 writeln ('Слон: "Я найду хобот и убегу в Африку".');
 readln (c);
 more;if (mstop) then exit;
 writeln ('Слон: "В ящике останется медведь. Он всё равно не имеет уха".');
 writeln ('Медведь: "Я найду ухо и убегу в лес".');
 readln (c);
 more;if (mstop) then exit;
 writeln ('Медведь: "В ящике останется солдат. Он всё равно без ноги не может ходить".');
 writeln ('Солдат: "Я найду палку и сделаю из нее костыль".');
 readln (c);
 more;if (mstop) then exit;
 writeln ('Солдат: "В ящике останется кукла. Она всё равно одета в тряпье".');
 writeln ('Кукла: "Я пойду к портному и сошью себе новое платье".');
 readln (c);
 more;if (mstop) then exit;
 goto beginning;
 ending;
end.

Тестировалось на PascalABC.NET версии 3.3
Надо уточнить: использование goto - это не то же, что рекурсия, но
в любом случае программа как-то должна получить сообщение о прекращении
работы, например как здесь.
Ответить с цитированием
  (#3 (permalink)) Старый
Southpaw Southpaw вне форума
Member
 
Сообщений: 93
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 20.05.2019
По умолчанию 08.06.2019, 21:10

А где пробел или разрыв строки после точки с запятой в программе? Или компенсируется переизбытком разрыва строки в тексте?
Ответить с цитированием
  (#4 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 97
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 04.03.2008
По умолчанию 09.06.2019, 11:57

Реальные компиляторы не считают пробелы и не выдают ошибку,
если стоит ; перед end - это просто слишком усложняет написание
программы и не нужно для правильной компиляции.
Ответить с цитированием
  (#5 (permalink)) Старый
Southpaw Southpaw вне форума
Member
 
Сообщений: 93
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 20.05.2019
По умолчанию 09.06.2019, 12:41

Дело в том, что мне, как филологу, удобнее так.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу через case!!! glebochek Pascal 2 07.12.2011 10:46
помогите с программой,че то не получается с case макс1м Вопросы начинающих программистов 5 04.11.2011 23:55
использование оператора case 555ALEXANDR555 Pascal 0 10.01.2011 17:27
CASE в SQL запросе из VBA. ODBC DDD_dimon_ Visual Basic 0 18.02.2009 17:46
Hotel. Проблема в Case. kompak Pascal 3 10.10.2008 18:11
Transformers Case by Vov4ip vov4ip Моддинг 3 12.02.2008 19:29
Подскажите по select case/ crazu2007 Visual Basic 5 03.08.2007 11:39
Работа с оператором выборки Case Виталик 1 Delphi 4 18.06.2007 14:23
Как решить задачу CASE WHEN Vil_aka_Mouse SQL 7 13.01.2007 14:38
CASE-средства для Java Omen Java 3 08.04.2006 14:33
Select Case kminas Visual Basic 4 06.03.2006 23:07
Использование CASE средств UZZer Общие вопросы создания ПО 8 13.03.2004 09:34



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов