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

do while - почему выполняется цикл, даже если условие истина? - C++

Войти
Регистрация
Восстановить пароль
 
DDim1000
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 235
27.09.2012, 15:23     do while - почему выполняется цикл, даже если условие истина? #1
Подскажите пожалуйста, пишу программу вопрос/ответ. При не правильным вводе ответа, программа должна выводить сообщение об ошибке.
Вопрос. Почему хоть и вводится правильный ответ, программа выводит сообщение об ошибке, и только при повторном вводе ответа, переходит к следующему вопросу, что ни так?

C++
1
2
3
4
5
6
7
8
9
10
      for (int i=1; i < n; i++){
     
       cout << question(i) << endl;
        getline(cin,str);
     do {
         cout << "Ответ не верный, попробуйте ввести еще раз." << endl;    
         getline(cin,str);
         }while(str !=answer(i));
  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 15:23     do while - почему выполняется цикл, даже если условие истина?
Посмотрите здесь:

Как выйти?, если условие не выполняется C++
Написать программу, в результате выполнения которой булевская переменная t получает значение TRUE, если выполняется заданное условие... C++
C++ Составить программу, которая выводит на экран слово «ИСТИНА», если условие выполнено или слово «ЛОЖЬ», если условие не выполнено.
Почему цикл выполняется бесконечно? C++
Программа, выводящая значение "истина", если выполняется заданное условие: все из чисел x, y, z являются положительными C++
C++ Почему не выполняется цикл?
Почему не срабатывает if, если истина? C++
C++ Не выполняется условие или почему данные все равно переползают в S2?
Даны действительные числа A, B, C, D. Каждое число заменить наибольшим из них, если выполняется условие C++
Почему условный оператор даже, если условие неверно, выдает истину? C++
C++ Двойной цикл: нужно получить первое значение если выполнится условие
Почему всегда выполняется условие? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.09.2012, 15:24     do while - почему выполняется цикл, даже если условие истина? #2
DDim1000, а ты сам-то даже по последовательности кода не видишь, где проверка-то на ввод?
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
27.09.2012, 15:25     do while - почему выполняется цикл, даже если условие истина? #3
Приведите код полностью.
[WRG]
 Аватар для [WRG]
50 / 50 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
27.09.2012, 15:42     do while - почему выполняется цикл, даже если условие истина? #4
цикл do-while с постпроверкой условия и всегда выполняется как минимум один раз. циклы for и while могут не выполниться ниразу, в зависимости от условия
DDim1000
1 / 1 / 0
Регистрация: 17.12.2011
Сообщений: 235
27.09.2012, 16:20  [ТС]     do while - почему выполняется цикл, даже если условие истина? #5
Цитата Сообщение от Gepar Посмотреть сообщение
Приведите код полностью.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <string>
#include <Windows.h>
 
using namespace std;
 
const int n=15;
      
char *riddle(int);
char *answer(int);
int *ko[]={};
 
int main()
{
      setlocale(LC_ALL, "Russian"); 
      using std::cin;using std::cout;using std::endl;using std::string;using std::getline;
       SetConsoleCP (1251); SetConsoleOutputCP (866);
      string str;
 
      for (int i=1; i < n; i++){
 
     
       cout << riddle(i) << endl;
        getline(cin,str);
     do {
         cout << "Error" << endl;    
         getline(cin,str);
         }while(str !=answer(i));
  
    
 
}
       system("pause"); 
}      
 
 
 
 
char *riddle (int k)  
{
      static char *name[] = {
                              "none","ГЌГҐ åçäîê, Г* Г±Г® øïîðГ*ìè, ГЌГҐ áóäèëüГ*ГЁГЄ, Г* ГўГ±ГҐГµ áóäèò.",
                              "ГЋГ*Г* ГЄГ°Г*Г±ГЁГўГ* ГЁ ìèëГ*, ГЂ èìÿ ГҐГ© îò ñëîâГ* ''çîëГ*''.",
                              "ÂåðåùóГ*ГјГї áåëîáîêГ*, ГЂ çîâóò ГҐГҐ ... "
                              
                            };
      return (k<1||k>12)?name[0]:name[k];
}
 
 
 
char *answer (int k)  
{
      static char *name2[] = {
                              "none","ГЏГҐГІГіГµ",
                              "ÇîëóøêГ*","ÑîðîêГ*"
                            };                            
      
      return (k<1||k>12)?name2[0]:name2[k];
 
 
    cin.sync();
    cin.get();
    return 0;
    
 
}
co6ak
Кошковед
 Аватар для co6ak
406 / 499 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
27.09.2012, 16:47     do while - почему выполняется цикл, даже если условие истина? #6
Цитата Сообщение от [WRG] Посмотреть сообщение
цикл do-while с постпроверкой условия и всегда выполняется как минимум один раз. циклы for и while могут не выполниться ниразу, в зависимости от условия
12345
Yandex
Объявления
27.09.2012, 16:47     do while - почему выполняется цикл, даже если условие истина?
Ответ Создать тему
Опции темы

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