Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
19 / 19 / 16
Регистрация: 13.10.2013
Сообщений: 205

Оператор case, выбор категорий. Возврат в начало кода

23.11.2014, 17:11. Показов 1541. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте, решил написать программу обед в столовой техникума, но не могу понять как из середины цикла, кода программы вернуться обратно на повторный выбор категорий.
Программа, её суть:
Пришел студент набирает продукты напиток, второе блюдо, и т.д. и его выбор суммируется в конце выводится результат на сколько он набрал товара и вводит свою сумму денег, если сумма равна выход иначе дает сдачу.

Нужно вставить код где указан комментарий после Then.

If choose='Да' Then {Перемещаемся в меню, в самое начало выбора категорий где напитки, суп и т.д.} - здесь

так же если есть возможность уменьшить код приму ваши взгляды.
На данный момент представил не полный код, чтоб было видно что по чем основное.


Код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Program stolovaPAT;
Uses crt;
Const sokper = 15;{Объявил цены на продукты}
cofekrep = 12;
cofemag = 12;
cofekam = 12;
tea = 6;
 
Var menu:1..4; 
 nap:byte;
 sum,summamoney:Integer;
 choose:char;
Begin
textcolor(red);
ClrScr;
sum:=0;
 WriteLn('Столовая ПАТ'); 
 WriteLn('Меню: ',#10,#13,'1. Напитки',#10,#13,'2. Суп',#10,#13,'3. Вторые блюда',#10,#13,'4. Салат');
 ReadLn(menu);
  Case menu of
   1 : Begin
        WriteLn('Вы выбрали раздед напитки ',#10,#13,'1. Сок персиковый [',sokper,' руб]',#10,#13,'2. Чай [',tea,' руб]',#10,#13,'3. Кофе крепкий [',cofekrep,' руб]',#10,#13,'4. Кофе мягкий [',cofemag,' руб]',#10,#13,'5. Кофе карамелька [',cofekam,' руб]');
        ReadLn(nap);
        If nap=1 then 
         begin
          sum:=sum+sokper;
          WriteLn('Вы выбрали сок персиковый. Желает еще что нибудь ?',#10,#13,'Да/Нет');
          ReadLn(choose);
          If choose='Да' Then {Перемещаемся в меню, в самое начало выбора категорий где напитки, суп и т.д.}
                         Else begin
                          WriteLn('Ваш заказ составил ',sum,' руб');
                          WriteLn('Введите вашу сумму денег: ');
                          ReadLn(summamoney);
                           If summamoney=sum Then WriteLn('Спасибо, приходите еще поесть в ПАТ !')
                                             Else WriteLn('Спасибо, ваша сдача ',summamoney-sum,', руб');                          
                         end;
         end;
        If nap=2 then sum:=sum+tea;
        If nap=3 then sum:=sum+cofekrep;
        If nap=4 then sum:=sum+cofemag;
        If nap=5 then sum:=sum+cofekam;
       end;
  end;     
End.
Добавлено через 8 минут
Еще в результате перечислить товары, которые купил студент.
Пример:
Ваш заказа составил n рублей
Вы купили:
Кофе мягкий
Котлету
Рис и т.д.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2014, 17:11
Ответы с готовыми решениями:

При попытке добавить оператор else, появляется оператор "Ожидался оператор"
Здравствуйте, помогите пожалуйста. У меня есть программа, которая решает квадратные уравнения. Но...

Оператор case - добавить в код недостающие фрагменты
Program EXAMPL1; Var I : integer; X : real; Begin … CASE I OF 1 : X :=...

оператор CASE
Добрый день, у меня возникла проблема с операторм CASE, необходимо решить след задачу (у меня не...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
23.11.2014, 17:13
Обычно это делается оборачиванием всего нужного фрагмента циклом:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
program stolovaPAT;
 
uses
  crt;
 
const
  sokper = 15;{Объявил цены на продукты}
  cofekrep = 12;
  cofemag = 12;
  cofekam = 12;
  tea = 6;
 
var
  menu: 1..4; 
  nap: byte;
  sum, summamoney: Integer;
  choose: char;
 
begin
  textcolor(red);
  ClrScr;
  sum := 0;
  WriteLn('Столовая ПАТ'); 
  repeat
    WriteLn('Меню: ', #10, #13, '1. Напитки', #10, #13, '2. Суп', #10, #13, '3. Вторые блюда', #10, #13, '4. Салат', #10, #13, '5. Выход');
    ReadLn(menu);
    case menu of
      1: 
        begin
          WriteLn('Вы выбрали раздед напитки ', #10, #13, '1. Сок персиковый [', sokper, ' руб]', #10, #13, '2. Чай [', tea, ' руб]', #10, #13, '3. Кофе крепкий [', cofekrep, ' руб]', #10, #13, '4. Кофе мягкий [', cofemag, ' руб]', #10, #13, '5. Кофе карамелька [', cofekam, ' руб]');
          ReadLn(nap);
          if nap = 1 then 
          begin
            sum := sum + sokper;
            WriteLn('Вы выбрали сок персиковый. Желает еще что нибудь ?', #10, #13, 'Да/Нет');
            ReadLn(choose);
            if choose = 'Да' Then continue // Переходим опять на начало цикла
            Else begin
              WriteLn('Ваш заказ составил ', sum, ' руб');
              WriteLn('Введите вашу сумму денег: ');
              ReadLn(summamoney);
              if summamoney = sum Then WriteLn('Спасибо, приходите еще поесть в ПАТ !')
              Else WriteLn('Спасибо, ваша сдача ', summamoney - sum, ', руб');                          
            end;
          end;
          if nap = 2 then sum := sum + tea;
          if nap = 3 then sum := sum + cofekrep;
          if nap = 4 then sum := sum + cofemag;
          if nap = 5 then sum := sum + cofekam;
        end;
    end; 
  until menu = 5; // Выбрали выход - выходим из основного цикла
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2014, 17:13
Помогаю со студенческими работами здесь

Оператор case в Pascal
Всем привет, помогите советом.....Мне надо написать программу к задаче: Дано натуральное число n...

Оператор case: арифметические действия над числами
Арифметичні дії над числами пронумеровані в такий спосіб: 1 - додавання, 2 -віднімання, 3 -...

оператор выбора case
составить программу, которая бы по введенному времени года выдавала бы название месяцев,...

Оператор выбора case. Вывести название соответствующей цифры на русском языке
Дано целое число в диапазоне 0-9.Вывести строку название соответствующей цифры на русском языке (0...

Оператор выбора case
Здравствуйте!Помогите решить задачку с оператором case: Единицы массы пронумерованы следущим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru