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

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

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

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

15.05.2012, 16:34. Просмотров 330. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2012, 16:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите разобраться с циклом while. (C++):

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

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

Не могу разобраться с циклом - 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++) { ...

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

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

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

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

Попробовал вместо char reply[]= "y"; написать string reply = "y"; , компилятор выдает ошибку на строке 8...
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.05.2012, 16:55 #4
Как вариант -- "y" -- это строка. А вот 'y' -- это уже символ, и с ним вы сравнивать можете.
И вообще, зачем там строка, если вам ответят y\n? Одним символом же обойтись можно!
0
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
15.05.2012, 16:59 #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;
    }
}
0
Dmitriy1342
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 37
15.05.2012, 17:06  [ТС] #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;
}
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.05.2012, 17:08 #7
Ишшо раз. Зачем там вообще строки? Там же 1 символ?
0
Dmitriy1342
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 37
15.05.2012, 17:13  [ТС] #8
Разве между ними есть значительная разница?
0
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
15.05.2012, 17:15 #9
Что-нибудь из этого забыли?
C++
1
2
3
4
#include <iostream>
#include <string>
 
using namespace std;
1
Dmitriy1342
1 / 1 / 0
Регистрация: 07.02.2012
Сообщений: 37
15.05.2012, 17:21  [ТС] #10
Да, забыл библиотеку string. Спасибо больше! Наконец то все работает как надо) Пойду искать информацию по искусственному интеллекту)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2012, 17:21
Привет! Вот еще темы с ответами:

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

Помогите разобраться с try-catch - C++
#include &lt;iostream.h&gt; int main() { int s = 0; try { int a = 6 / s; } catch(char* exception) {

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

Помогите новичку разобраться с С++ - C++
Доброго всем времени суток! Пытаюсь изучать С++ и у меня такие вопросы(накопились из разных тем): 1.Когда надо в конце типу float...


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

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

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