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

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

Войти
Регистрация
Восстановить пароль
 
Tantay
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 115
#1

Возможно дело в цикле - C++

01.08.2013, 17:50. Просмотров 255. Ответов 2
Метки нет (Все метки)

Задачка: Программа должна отображать меню из четырех пунктов, каждый из них помечен буквой. Если пользователь вводит букву, отличающуюся от четырех допустимых, программа должна повторно приглашать его ввести правильное значение до тех пор, пока он этого не сделает.

с таким вот условием цикл останавливается:
C++
1
2
    
while (b != 'c');
а вот с таким, нечего не происходит:
C++
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
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    
    const int m = 4;
    const char * mas[m]=    {"c) помидор", "p) урюк", "t) баклажан", "g) баран"};   
    char b;
    
 
    do{
        cout << "Выберите один из варинтов:"<<endl;
        for (int i=0; i<m; i++)
        {
            if (i!=2)
                cout << mas[i] << "\t";
            else
                cout <<endl<< mas[i]<<"\t";
        
        }
 
        cout << endl << "-> ";
        cin >> b;
    }
    while (b != 'c' || b !='p' || b != 't' || b != 'g');
 
    system ("pause");
}
объясните пожалуйста в чем проблема.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2013, 17:50     Возможно дело в цикле
Посмотрите здесь:

Не правильно работает программа, возможно дело в операторе if - C++
Здравствуйте, начал изучать язык программироваия C++, пркатикуюсь, решая задачи. Сейчас решал задачу, требующая форматировать вывод:...

в чем дело? - C++
может кто объяснит в чем дело? просто заметил одну особенность, если temp &lt;=8 символам (не считая нулевого в конце), то t выводит с двумя...

В чем дело? - C++
Что такое, почему не создается прога?

getline() в чем дело - C++
Нужно заполнять данный массив, если использовать просто &quot;cin&lt;&lt;&quot; то пробелы нельзя делать при вводе. Поэтому хочу использовать getline(),...

В чём тут дело??? - C++
программы то зфцыкливаются, то вообще ни чего не выводят. Вводится последовательность из N вещественных чисел. Определить среднее...

не пойму в чем дело - C++
всем привет! такая вот у меня проблема: две сортировки должны отсортировать массивы из 1000, 5000 и 10000 элементов и подсчитать время...

Ни как не разберусь в чем дело... - C++
Подскажите что не так ругается на функцию в строке 23 говорит что &quot;результатом вычисления фрагмента не является функция, принимающая 1...

небольшая ошибка в чем дело? - C++
не компилится данная прога в с++ выдает error C2447: '{' : missing function header (old-style formal list?) в ms visual studio 2008 ...

Как обстоит дело с квадратиками? - C++
Вот например есть массив вот как на картинке! И будет стоять такой вопрос найти в нем закрашенные квадратики! Как обозначить эти...

Пятиминутное дело!В чем ошибка? - C++
В первой строке дано неотрицательное число N- количество элементов массива (N&lt;=100). Во второй строке дано число b Заполнить массив...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
01.08.2013, 17:55     Возможно дело в цикле #2
while (b != 'c' || b !='p' || b != 't' || b != 'g');
это означает, что если будет нажато с, то цикл всё равно продолжится, т.к. истинны условия b !='p'||b != 't'||b != 'g'
C++
1
while (b != 'c' && b !='p' && b != 't' && b != 'g');
Tantay
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 115
01.08.2013, 17:57  [ТС]     Возможно дело в цикле #3
спасибо
Ответ Создать тему
Опции темы

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