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

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

Войти
Регистрация
Восстановить пароль
 
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
#1

Бесконечный цикл (как избежать?) - C++

12.06.2011, 00:49. Просмотров 920. Ответов 8
Метки нет (Все метки)

Программа должна принимать только одно из трёх значений переменной 'destiny'. Если вводят любое другое значение, программа должна повторять вопрос до тех пор, пока не введут значение так, как следует.

Пробовал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    do
    {
        if (destiny == 'e')     // если выбран легкий уровень сложности
        {
           capital = 10000;     // капитал = 10 000
           cout << "You have chosen easy game and your start capital is $" << capital << ".";
        }
        else if (destiny == 'm') // если выбран средний уровень сложности
        {
           capital = 7500;       // капитал = 7 500
           cout << "You have chosen middle game and your start capital is $" << capital << ".";
        }
        else if (destiny == 'h') // если выбран сложный уровень сложности
        {
           capital = 5000;       // капитал = 5 000
           cout << "You have chosen hard game and your start capital is $" << capital << ".";
        }
        else                     // если ввели левое значение
            cout << "Error. Sorry.";    // сообщение об ошибке
    } while (destiny != 'e' || destiny != 'm' || destiny != 'h');
но выдает бесконечный цикл.

Как сделать правильно?

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2011, 00:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бесконечный цикл (как избежать?) (C++):

как создать бесконечный цикл - C++
помогите)нужно чтоб можно было вводить несколько раз за сеанс)экзе файл закрывается

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

как засунуть условно-бесконечный цикл - C++
еще позавчера как-то умудрился, но задача решена была неверно, сейчас уже мозг потек... #include &lt;iostream&gt; #include &lt;cmath&gt; ...

Как можно пройти через бесконечный цикл ??? - C++
У меня случилось что-то вроде парадокса. Прогал я в Eclipse (у него компилятор MinGW, отладчик GDB), напрогал выложенную ниже программу....

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Есть бесконечный цикл в программе и она поэтому занимает процессор, как это исправить? - C++
НАписал себе напоминалку, а она жрёт процессор (~~ 45%); код упростил для понятности #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #include...

8
silent_1991
Эксперт С++
4993 / 3051 / 149
Регистрация: 11.11.2009
Сообщений: 7,038
Завершенные тесты: 1
12.06.2011, 00:55 #2
В условии цикла вместо || поставьте && везде.
1
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
12.06.2011, 00:58  [ТС] #3
Пробовал.

Если вводить нужные значения, то работает как предусмотрено, а вот если ввести что-то левое, то бесконечно зацикливает "Error. Sorry.".
0
YsWaY
0 / 0 / 0
Регистрация: 08.06.2011
Сообщений: 2
12.06.2011, 01:01 #4
лучше использовать оператор case, чем else if мне кажется, т.е. swith
0
silent_1991
Эксперт С++
4993 / 3051 / 149
Регистрация: 11.11.2009
Сообщений: 7,038
Завершенные тесты: 1
12.06.2011, 01:06 #5
vortexx1, ну так вы ввод значения внутри цикла сделайте.
1
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
12.06.2011, 01:13  [ТС] #6
YsWaY, если вы имели ввиду это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    do
    {
         switch (destiny)
         {
            case 'e':
                 capital = 10000;
                 cout << "Easy mode. Your capital is $" << capital << ".";
                 break;
                 
            case 'm':
                 capital = 7500;   
                 cout << "Middle mode. Your capital is $" << capital << ".";
                 break;
                 
            case 'h':
                 capital = 5000;
                 cout << "Hard mode. Your capital is $" << capital << ".";
                 break;
                 
            default:
                 cout << "Error. Enter correct value, please.";
         }
    } while (destiny != 'e' && destiny != 'm' && destiny != 'h');
... то оно не помогло.

silent_1991, простите, не понимаю, что вы подразумеваете. Можете показать?
Спасибо.
0
silent_1991
Эксперт С++
4993 / 3051 / 149
Регистрация: 11.11.2009
Сообщений: 7,038
Завершенные тесты: 1
12.06.2011, 01:14 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
do
    {
        cin >> destiny;
 
        if (destiny == 'e')     // если выбран легкий уровень сложности
        {
           capital = 10000;     // капитал = 10 000
           cout << "You have chosen easy game and your start capital is $" << capital << ".";
        }
        else if (destiny == 'm') // если выбран средний уровень сложности
        {
           capital = 7500;       // капитал = 7 500
           cout << "You have chosen middle game and your start capital is $" << capital << ".";
        }
        else if (destiny == 'h') // если выбран сложный уровень сложности
        {
           capital = 5000;       // капитал = 5 000
           cout << "You have chosen hard game and your start capital is $" << capital << ".";
        }
        else                     // если ввели левое значение
            cout << "Error. Sorry.";    // сообщение об ошибке
        } while (destiny != 'e' || destiny != 'm' || destiny != 'h');
1
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
12.06.2011, 01:15  [ТС] #8
Аааа, понял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    do
    {
        cin >> destiny;
        cout << endl;
            
        if (destiny == 'e')     // если выбран легкий уровень сложности
        {
           capital = 10000;     // капитал = 10 000
           cout << "You have chosen easy game and your start capital is $" << capital << ".";
        }
        else if (destiny == 'm') // если выбран средний уровень сложности
        {
           capital = 7500;       // капитал = 7 500
           cout << "You have chosen middle game and your start capital is $" << capital << ".";
        }
        else if (destiny == 'h') // если выбран сложный уровень сложности
        {
           capital = 5000;       // капитал = 5 000
           cout << "You have chosen hard game and your start capital is $" << capital << ".";
        }
        else                     // если ввели левое значение
            cout << "Error. Sorry.";    // сообщение об ошибке
        } while (destiny != 'e' || destiny != 'm' || destiny != 'h');
Работает. Спасибо большое.
0
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
12.06.2011, 05:56 #9
Понимаю что уже на тему ответили, но все таки
ТС, используй лучше

switch (destiny) {
case 'h':
//.....
break;
case 'e':
//.....
break;
default:
//.....
}

будет лучше
0
12.06.2011, 05:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2011, 05:56
Привет! Вот еще темы с ответами:

Бесконечный цикл - C++
Как ввести программу в бесконечный цикл на C++ ? Смотрел видео где делали бесконечный цикл (НО!) это было на Small Basic'е, а мне нужно...

Бесконечный цикл - C++
Простите что с таким лёгким вопросом, но мистика окутывает мою учёбу всё больше и больше ^^ Тут програмка которая считает сумму каждого...

Бесконечный цикл While - C++
Здравствуйте, помогите пожалуйста с задачей. Условие - ввести массив, состоящий из х числа элементов, затем &quot;распаковать&quot; его в серию нулей...

Бесконечный цикл - C++
Почему компилятор выдает всякую ерунду при попытке воспроизвести этот код? Что его зацикливает? #include &quot;stdafx.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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