Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
#1

Что не так в цикле? - C++

08.03.2014, 22:02. Просмотров 224. Ответов 8
Метки нет (Все метки)

Доброго времени суток. Пытаюсь написать программу(решить задачу из книги Дейтелов "Как программировать на С++). Суть программы в следующем: есть 5 товаров, у каждого из них своя стоимость. Нужно ввести количество проданных товаров каждого вида и вывести стоимость в сумме каждого товара. Написать то написал, но работает не так как надо) При вводе контр значения(-1) цикл повторяется, а должен быть выход из него. Подскажите что не правильно в цикле.

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
int colvo;
char number;
double sum1;
double sum2;
double sum3;
double sum4;
double sum5;
cout << "Enter cod or -1 to exit: ";
cin >> number;
while(number != -1) {
switch(number) {
case '1':
cout << "Enter col-vo: ";
cin >> colvo;
sum1 = colvo * 2.98;
break;

case '2':
cout << "Enter col-vo: ";
cin >> colvo;
sum2 = colvo * 4.50;
break;

case '3':
cout << "Enter col-vo: ";
cin >> colvo;
sum3 = colvo * 9.98;
break;

case '4':
cout << "Enter col-vo: ";
cin >> colvo;
sum4 = colvo * 4.49;
break;

case '5':
cout << "Enter col-vo: ";
cin >> colvo;
sum5 = colvo * 6.87;
break;

case '\n':
case '\t':
case ' ':

default:
cout << "Error, incorrected cod!" << endl;
break;
}
cout << "Enter cod or -1 to exit: " << endl;
cin >> number;
}
cout << "Tovar 1: " << setw(15) << sum1 << endl;
cout << "Tovar 2: " << setw(15) << sum2 << endl;
cout << "Tovar 3: " << setw(15) << sum3 << endl;
cout << "Tovar 4: " << setw(15) << sum4 << endl;
cout << "Tovar 5: " << setw(15) << sum5 << endl;
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2014, 22:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что не так в цикле? (C++):

Что не так в цикле? - C++
for(k=0, i=0; k&lt;4*N; k++, i++) { if(alfaint!=alfa) { while(alfaint!=alfa) { ...

Что-то не так в цикле - C++
Цикл пробегает одну строку и после этого программа виснет. for (i = 0; i &lt; img_x - 1; i++) { for(j = 0; j &lt; img_y - 1; j++) { ...

Условие в цикле do while работает не так, как ожидается - C++
Проблема в условие цикла. Вот Код.// ConsoleApplication4.cpp: определяет точку входа для консольного приложения. // #include...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float a,c; char b; skip: ...

Что в коде ни так? while не работает так, как ожидаю - C++
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от 702 до 1000. Что ни так понимаю, где...

Что-то не то с Майкрсофт визуал студио 2010 или я что-то не так делаю - C++
Дело в том что при запуске вот этой программы: #include &lt;iostream&gt; using namespace std; int main () { for (int i=100; i&lt;=999;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
08.03.2014, 22:10 #2
Цитата Сообщение от engine76 Посмотреть сообщение
while(number != -1) {
Попробуйте использовать цикл FOR с доп условием
C++
1
2
if(number == -1) 
break;
0
Krasme
2122 / 1953 / 652
Регистрация: 02.02.2014
Сообщений: 5,418
08.03.2014, 22:10 #3
C
1
char number;
и при этом
C
1
while(number != -1)
?
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
08.03.2014, 22:12 #4
А, да, не заметил. Тогда или вместо типа char используй тип int или проверяй while(number!="-1")
0
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
08.03.2014, 22:22  [ТС] #5
Изменил тип на int, теперь при вводе любого значения пишет:

E:\Programms\VS2010\VC>dt514
Enter cod or -1 to exit: 2
Error, incorrected cod!
Enter cod or -1 to exit:
1
Error, incorrected cod!
Enter cod or -1 to exit:
-1
Tovar 1: 4.3266e-311
Tovar 2: 4.3266e-311
Tovar 3: 4.3266e-311
Tovar 4: 0
Tovar 5: 0
0
Krasme
2122 / 1953 / 652
Регистрация: 02.02.2014
Сообщений: 5,418
08.03.2014, 22:23 #6
если тип int, то и в case надо поправить.
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
08.03.2014, 22:25 #7
зачем вообще использовать case в данном случае? не проще ли через обычные условия? и мозг ломать не придётся
0
Krasme
2122 / 1953 / 652
Регистрация: 02.02.2014
Сообщений: 5,418
08.03.2014, 22:26 #8
в данном случае (перебор вариантов) case удобнее. только автору надо разобраться с типами.
0
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
08.03.2014, 22:29  [ТС] #9
По книге учусь, написано через switch сделать) Исправил в case, все заработало) Всем спасибо за помощь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2014, 22:29
Привет! Вот еще темы с ответами:

Что в программе делает так, что процессор грузится на 100%? - C++
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки на процессор. Вот код программы, на компьютере жрет всю...

Список: Что не так с выводом списка, потому что выводится какой-то мусор? - C++
#include &lt;iostream&gt; using namespace std; struct point { int data;//информационное поле-это даннные объявленного или используемого...

Что происходит в цикле for? - C++
Здравствуйте, не могу разобраться с условием работы в цикле for. Кто сведущ, объясните, пожалуйста, что это за условие такое? for...

Лучший интерактивный самоучитель с++, но так понравился, что думаю, а что если после python изучать с++? - C++
http://academy.cppstudio.com/courses/ 1.) поделитесь опытом после какого языка вы перешли на с++. 2.) Что вам нравится/не очень в языке...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.03.2014, 22:29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru