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

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

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

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

Нужно вставить код где указан комментарий после 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2014, 17:11
Ответы с готовыми решениями:

Оператор iff в access (выбор категорий)
Помогите пожалуйста разобраться. Есть колонка "Категории" в которой выбирается значения только от...

Возврат case
Если пользователь выбрал 2 или 3, то програма должна заново запустить switch после выполнения...

Оператор case (ошибка): "Control cannot fall through from one case Label ('default:') to another"
Выдает ошибку: "Control cannot fall through from one case label ('default:') to another" class...

Возврат в начало приложения
При выборе факториала и получения ответа программа просит ввести 1 и 2 число без выбора действия,...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
23.11.2014, 17:13 2
Обычно это делается оборачиванием всего нужного фрагмента циклом:
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
23.11.2014, 17:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2014, 17:13
Помогаю со студенческими работами здесь

Возврат в начало условия
В общем у меня в программе (Windows Forms) идёт проверка на то, что все поля заполнены через...

Возврат fseek на начало файла
Добрый день, столкнулся с такой проблемой : мне нужно было выделить память под текстовые данные из...

listBox (возврат в начало списка)
Всем здрасте, такой вопрос. Есть один ListBox с элементами. Как сделать так чтобы когда я щелкал...

Возврат в начало функции из блока Switch
Можно ли вернуться как-то из switch(deystvie)/(deystvie2) или из любого его case в самое начало...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru