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

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

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

Помогите разобраться с циклом while. - C++

15.05.2012, 16:34. Просмотров 329. Ответов 9
Метки нет (Все метки)

Здравствуйте. Уже долго мучаюсь с крестиками-ноликами. Наконец то подошел финал, как вдруг на самом простом запутался. Помогите разобраться. Без циклов while программа работает как часы, но с ними выполнение прекращается на приветствии. Где же ошибка?

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
int main(){
    setlocale (LC_ALL, "Russian");
 
    cout <<"Приветствуем в игре Крестики-нолики!\n";
    char reply[]= "y";
    int x_wins=0, o_wins=0, ties=0;
 
    while(reply =="y") {
    clearboard();                         //заполнение игрового поля
    char winner = play_and_get_winner();  //запуск игры, получение победителя (winner)
    print_board();                        //показать доску
    
    switch(winner){                        //счетчик побед
    case 'X':
        x_wins++;
        break;
    case 'O':
        o_wins++;
        break;
    case 'D':
        ties++;
        break;
    }
 
    cout <<"\nСтатистика побед\nИгрок Х: "<<x_wins
        <<" , Игрок О: "<<o_wins<<" Ничья: "<<ties<<"\n\n";
    cout <<"\nХотите сыграть еще раз?(y/n)";
    cin >>reply;
    
    while(reply != "y" && reply != "n"){
        cout <<"Введите правильный вариант:";
        cin >>reply;
    }
    }
            
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2012, 16:34     Помогите разобраться с циклом while.
Посмотрите здесь:

Не могу разобраться с циклом - C++
int _tmain(int argc, _TCHAR* argv) { int x,y; cout &lt;&lt; &quot;Vvedite dva chisla&quot; &lt;&lt; endl; cin &gt;&gt; x &gt;&gt; y; for (int i=1; i&lt;=y; i++) { ...

Не могу разобраться с циклом - C++
Надо сделать так, чтобы после выполнения программы, либо если юзер ввёл число d, которого не существует, программа нам предложила ещё...

Нужно разобраться с циклом if - C++
Всем привет, помогите разобраться. Дано задание: Найти минимальный положительный элемент массива (N) и количество четных элементов. ...

С циклом for не могу разобраться - C++
В учебнике обещано что: Приводимый ниже код выводит на экран числа от 1 до 100. { int count; for (count =1; count &lt;=100;...

помогите решить циклом!!! - C++
Имеется кусок ткани длиной М метров. От него последовательно отрезаются куски разной длины. Все данные по использованию ткани заносятся в...

Помогите разобраться - C++
У меня есть координаты North,West,East,South. Мне нужно отобразить их на осях ОХ и ОУ. Допустим я ввожу North 5 East 3 South 1 ...

If else помогите разобраться - C++
Доброго времени суток всем. Не так давно начали программировать в C++ MS Visual Studio 2010? и возникло у меня затруднение в работе с if ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
15.05.2012, 16:41     Помогите разобраться с циклом while. #2
Цитата Сообщение от Dmitriy1342 Посмотреть сообщение
while(reply =="y") {
Так сравнивать С-строки нельзя (сравнение указателей на первые элементы строк), для этого есть strcmp из <cstring>:
C++
1
 while (std::strcmp(reply, "y") == 0)
Вообще, по хорошему, в С++ в качестве строк лучше использовать std::string (по крайней мере, их можно сравнивать с помощью ==).
Dmitriy1342
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 37
15.05.2012, 16:49  [ТС]     Помогите разобраться с циклом while. #3
А что за тип string? Не помню, для чего и как он создается. Пробовал стащить его из примера, но не работало понятия не имею почему.

Попробовал вместо char reply[]= "y"; написать string reply = "y"; , компилятор выдает ошибку на строке 8...
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.05.2012, 16:55     Помогите разобраться с циклом while. #4
Как вариант -- "y" -- это строка. А вот 'y' -- это уже символ, и с ним вы сравнивать можете.
И вообще, зачем там строка, если вам ответят y\n? Одним символом же обойтись можно!
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
15.05.2012, 16:59     Помогите разобраться с циклом while. #5
Цитата Сообщение от Dmitriy1342 Посмотреть сообщение
А что за тип string?
Стандартный класс строк в С++.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
 
int main() {
    std::string reply = "y";
    
    while (reply == "y") {
        std::cout << "Hi!" << std::endl;
        std::cout << "continue? ";
        std::cin >> reply;
    }
}
Dmitriy1342
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 37
15.05.2012, 17:06  [ТС]     Помогите разобраться с циклом while. #6
Выдает ошибку на строке 8: бинарный "==": не найден оператор, принимающий левый операнд типа "std::string" (или приемлемое преобразование отсутствует). Можете показать, как надо правильно написать? Никак не пойму, как надо.

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
int main(){
    setlocale (LC_ALL, "Russian");
 
    cout <<"Приветствуем в игре Крестики-нолики!\n";
    string reply = "y";
    int x_wins=0, o_wins=0, ties=0;
 
    while (reply=="y") {
    clearboard();                         //заполнение доски
    char winner = play_and_get_winner();  //запуск игры, получение победителя
    print_board();                        //показать доску
    
    switch(winner){
    case 'X':
        x_wins++;
        break;
    case 'O':
        o_wins++;
        break;
    case 'D':
        ties++;
        break;
    }
 
    cout <<"\nСтатистика побед\nИгрок Х: "<<x_wins
        <<" , Игрок О: "<<o_wins<<" Ничья: "<<ties<<"\n\n";
    cout <<"\nХотите сыграть еще раз?(y/n)";
    cin >>reply;
    
    while(reply !="y" && reply !="n"){
        cout <<"Введите правильный вариант:";
        cin >>reply;
    }
    }
    
    getch();
    return 0;
}
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.05.2012, 17:08     Помогите разобраться с циклом while. #7
Ишшо раз. Зачем там вообще строки? Там же 1 символ?
Dmitriy1342
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 37
15.05.2012, 17:13  [ТС]     Помогите разобраться с циклом while. #8
Разве между ними есть значительная разница?
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
15.05.2012, 17:15     Помогите разобраться с циклом while. #9
Что-нибудь из этого забыли?
C++
1
2
3
4
#include <iostream>
#include <string>
 
using namespace std;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2012, 17:21     Помогите разобраться с циклом while.
Еще ссылки по теме:

Помогите разобраться с рекурсией... - C++
Здравствуйте, нашел решение задачи &quot;ханойских башен&quot;, проблема с пониманием. &lt;...&gt; tn(n,1,2,3); &lt;...&gt; void tn(int n,...

Помогите разобраться с кодом - C++
Код - проверка ввода данных. Если вводиться &quot;x6x&quot;, то вызывается исключение, правильным вводом являются только символы, например: &quot;xxx&quot;,...

Помогите разобраться в Наследование - C++
#include&lt;iostream&gt; using namespace std; class Counter1 { protected: int count; public: Counter1():count(0) { }

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

Помогите разобраться в коде - C++
Помогите мне разобраться в коде. Заранее спасибо. int seek_substring_KMP (char s, char p) { int i, j, N, M; N = strlen(s); M =...


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

Или воспользуйтесь поиском по форуму:
Dmitriy1342
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 37
15.05.2012, 17:21  [ТС]     Помогите разобраться с циклом while. #10
Да, забыл библиотеку string. Спасибо больше! Наконец то все работает как надо) Пойду искать информацию по искусственному интеллекту)
Yandex
Объявления
15.05.2012, 17:21     Помогите разобраться с циклом while.
Ответ Создать тему
Опции темы

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