Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в программе, помогите понять ПОЧЕМУ?.. 
:(
    Опции темы
porshegt3
Дата 24.1.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.12.2009
Где: Кировоград

Репутация: -1
Всего: -1



Я написал программу для вычисления стоимости пиццы:
Код

//Programma Pizza versiya 2.0
#include <iostream.h>
//Obichnaya bolshaya pizza stoit $14.
const float LargePrice = 14;
//Obichnaya malenkaya pizza stoit $10.
const float SmallPrice = 10;
//Eti chisla predstavlyaut razlichnie dobavki.
const int Pepperoni = 1;
const int Sausage = 2;
const int Onions = 3;
const int Chees = 4;
const int Fungus = 5;
//Stoimost razlichnih dobavok.
const float PepperoniPrice = 1.8;
const float SausagePrice = 2.1;
const float OnionPrice = 0.5;
const float CheesPrice = 2.6;
const float FungusPrice = 2.9;
//Dopolnitelnie konstanti.
const int Large = 1; //Bolshaya pizza
const int Small = 2; //Malenkaya pizza
class Pizza {
public:
       int NumberOfToppings;
       int Size;
       float CostForToppings;
       float Cost;
};
void main() {
       Pizza MyPizzaInfo;
       int ToppingChoice;
       //Kakov razmer?
       cout << "What size pizza do you want?" <<
               "Type 1 for large and type 2 for small.\n";
               //("Kakogo razmera piccu vi zhelaete?
               //Vvedite  1 dlya bolshoj i 2 dlya malenkoj")
       cin >> MyPizzaInfo.Size;
       //Kakova bazovaya cena?
       if (MyPizzaInfo.Size==Large)
               MyPizzaInfo.Cost = LargePrice;
       else
               MyPizzaInfo.Cost = SmallPrice;
       //Nachalnoe kolichestvo dobavok - 0.
       MyPizzaInfo.NumberOfToppings = 0;
       //Teper opredelim, kakie dobavki nuzhni zakazchiku.
       do {
              //Vipolnyat etot blok do teh por, poka
              //polzovatel ne perestanet zakazivat dobavki.
              cout << "What toppings? 1 = pepperoni, 2="
                      << "sausage, 3 = onions, 4 = chees, 5 = fungus, 0 = stop\n";
              cin >> ToppingChoice;
              //Teper opredelit, kak izmenitsya cena.
              //V cicle podschitivaetsya kolichestvo
              //zakazannih dobavok.
              switch (ToppingChoice) {
                      case Pepperoni:
                              MyPizzaInfo.Cost += PepperoniPrice;
                              cout << "OK, well add pepperoni.\n";
                              //("Horosho, dobavim perec.")
                              MyPizzaInfo.NumberOfToppings++;
                              break;
                      case Sausage:
                              MyPizzaInfo.Cost += SausagePrice;
                              cout << "Some sausage on that.\n";
                              //("A sverhu nemnogo kolbasi.")
                              MyPizzaInfo.NumberOfToppings++;
                              break;
                      case Onions:
                              MyPizzaInfo.Cost += OnionPrice;
                              cout << "Sounds good.\n";
                              //("Bozhestvennoe sochitanie")
                              MyPizzaInfo.NumberOfToppings++;
                              break;
                      case Chees:
                              MyPizzaInfo.Cost += CheesPrice;
                              cout << " You have nice taste.\n";
                              //("U vas horoshij vkus")
                              MyPizzaInfo.NumberOfToppings++;
                              break;
                      case Fungus:
                              MyPizzaInfo.Cost += FungusPrice;
                              cout << "This is very tasty.\n";
                              //("Bozhestvennoe sochitanie")
                              MyPizzaInfo.NumberOfToppings++;
                              break;
                      case 0:
                              //Etot variant predusmatrivaetsya dlya togo,chtobi
                              //ne vipolnelsya default, esli polzovatel zahochet
                              //prekratit zakazivat dobavki k picce.
                              break;
                      default:
                              cout <<"Pardon me?\n";
                              //("Prostite, chto vi skazali?")
              }//Konec operatora vibora switch.
       }//Konec operatora v cicle do.
       //Ostanovitsya, kogda polzovatel vvedet 0.
       while (ToppingChoice !=0);
       //Raz polzovatel zakonchil zakaz, napechatat ego stoimost.
       cout <<"That a ";
       if (MyPizzaInfo.Size == Large)
             cout << "large ";
       else
             cout << "small ";
       cout <<"pizza with " << MyPizzaInfo.NumberOfToppings
       <<" toppings. That will be $ " << MyPizzaInfo.Cost
       <<" please.\n ";
       }

Но дело в том, что когда выполняется программа, то сколько выбрал добавок (2 или 3 - всё равно), столько раз повторяется вопрос "Какие добавки" и затем сразу же печатается ответ(как надо). Вопрос: "ПОЧЕМУ повторяется вопрос???". Я просто не понимаю!!! Подскажите. Зарание спасибо...
PM MAIL ICQ Skype   Вверх
zim22
Дата 24.1.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(porshegt3 @  24.1.2010,  13:19 Найти цитируемый пост)
"ПОЧЕМУ повторяется вопрос???"

теперь понятно?
Цитата(porshegt3 @  24.1.2010,  13:19 Найти цитируемый пост)
   do {              
  cout << "What toppings?...";
......
  while (ToppingChoice !=0);




--------------------
PM MAIL   Вверх
Фантом
Дата 24.1.2010, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Цитата(porshegt3 @  24.1.2010,  14:19 Найти цитируемый пост)
Вопрос: "ПОЧЕМУ повторяется вопрос???".

Так ведь он сидит в цикле do-while. Естественно, он будет повторяться каждый раз.
PM   Вверх
andrew_121
Дата 24.1.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



потому что цикл do{}while()


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
chip_and_dayl
Дата 24.1.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Ну, потому что вопрос в цикле

Добавлено @ 15:09
Вот это
Код


              //Vipolnyat etot blok do teh por, poka
              //polzovatel ne perestanet zakazivat dobavki.
              cout << "What toppings? 1 = pepperoni, 2="
                      << "sausage, 3 = onions, 4 = chees, 5 = fungus, 0 = stop\n";


Поставить перед Do

Это сообщение отредактировал(а) chip_and_dayl - 24.1.2010, 15:10


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
NewDima
Дата 24.1.2010, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



отладку отменили?
PM ICQ   Вверх
porshegt3
Дата 24.1.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.12.2009
Где: Кировоград

Репутация: -1
Всего: -1



А может надо вот это
Код

              //Vipolnyat etot blok do teh por, poka
              //polzovatel ne perestanet zakazivat dobavki.
              cout << "What toppings? 1 = pepperoni, 2="
                      << "sausage, 3 = onions, 4 = chees, 5 = fungus, 0 = stop\n";

поставить перед do?
PM MAIL ICQ Skype   Вверх
porshegt3
Дата 28.1.2010, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.12.2009
Где: Кировоград

Репутация: -1
Всего: -1



Спасибо...
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1240 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.