Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с циклом. Программа для новичков 
V
    Опции темы
Roozan
Дата 24.1.2017, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.1.2017

Репутация: нет
Всего: нет



Не могу понять, что нужно сделать для того, чтобы в конце, когда пользователь должен ввести переменную game, цикл не был бесконечным, если пользователь вводит цифру, отличную от 0 или 1. Пробую switch, но он не выполняется. Помогите найти ошибку или подскажите, что нужно сделать, чтобы ее исправить. Буду очень благодарен! 

Код

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

//написать программу для считывания разрядов пятизначного числа.
//для этого необходимо: число, вводимое пользователем number, оператор входа\выхода из приложения, цикл.
int main ()
{
    int number;
    bool game = true;
    while (game == true)
    {
        cout << " Enter a five-digit number: " << endl;
        cin >> number;
        while (number < 10000 || number >= 100000)
        {
            cout << " Enter number again! " << endl;
            cin >> number;
        }
        cout << " 1 - numeral number`s: " << (number / 10000) << endl;
        cout << " 2 - numeral number`s: " << (number / 1000) % 10 << endl;
        cout << " 3 - numeral number`s: " << (number / 100) % 10 << endl;
        cout << " 4 - numeral number`s: " << (number / 10) % 10 << endl;
        cout << " 5 - numeral number`s: " << (number % 10) << endl;
        cout << " You want to continue entering the number? NO(0)/YES(1): " << endl;
        cin >> game;
        switch (game)
        {
            case 0: game == false;
            break;
            case 1: game == true;
            break;
            default: 
                {
                     cout << " Try again! " << endl;
                }
            
        }
        }
    return 0;
}

PM MAIL   Вверх
Курсант
Дата 24.1.2017, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: 1
Всего: 4



Попробуйте так:

while ( ( game < 0 ) || ( game > 1 ) )
{
        cout << " You want to continue entering the number? NO(0)/YES(1): " << endl;
        cin >> game;
}

}

return 0;
PM ICQ Skype   Вверх
vol4ek
Дата 24.1.2017, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: нет
Всего: 0



нет. true и false не обязательно равны 1 и 0 соответственно.

Добавлено через 2 минуты и 46 секунд
Цитата(Курсант @ 24.1.2017,  18:16)
Попробуйте так:

while ( ( game < 0 ) || ( game > 1 ) )
{
        cout << " You want to continue entering the number? NO(0)/YES(1): " << endl;
        cin >> game;
}

}

return 0;

лучше уж int там использовать
PM MAIL ICQ   Вверх
azesmcar
Дата 24.1.2017, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Roozan @  24.1.2017,  18:06 Найти цитируемый пост)
game == false


Цитата(Roozan @  24.1.2017,  18:06 Найти цитируемый пост)
game == true

полагаю здесь должно быть
Код

game = false;

и
Код

game = true;

соответственно
PM   Вверх
_zorn_
Дата 24.1.2017, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Языки со строгой типизацией предотвращают ваши ошибки. Ага.
А по факту, если не понимаешь что делаешь - хоть на ассемблере (вот уж гже строгая типизация) пиши - получится ### !!!
PM MAIL   Вверх
Olej
Дата 24.1.2017, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 30.11.2016

Репутация: нет
Всего: нет



Цитата(_zorn_ @ 24.1.2017,  20:00)
если не понимаешь что делаешь

во-во ...
я бы даже усугубил: "если до такой степени не понимаешь..."


Это сообщение отредактировал(а) Olej - 25.1.2017, 08:58
PM MAIL   Вверх
vol4ek
Дата 24.1.2017, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: нет
Всего: 0



Цитата(azesmcar @ 24.1.2017,  19:51)
Цитата(Roozan @  24.1.2017,  18:06 Найти цитируемый пост)
game == false


Цитата(Roozan @  24.1.2017,  18:06 Найти цитируемый пост)
game == true

полагаю здесь должно быть
Код

game = false;

и
Код

game = true;

соответственно

не заметил. +1

Добавлено через 1 минуту и 46 секунд
но суть не меняется true и false не обязательно равны нулю и единице
PM MAIL ICQ   Вверх
volatile
Дата 24.1.2017, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(vol4ek @  24.1.2017,  22:26 Найти цитируемый пост)
 true и false не обязательно равны нулю и единице 

Обязательно (по стандарту).
PM MAIL   Вверх
vol4ek
Дата 24.1.2017, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: нет
Всего: 0



Код

BOOL b = 5;
cout 《 b 《 endl;
if (b == TRUE)
{
cout 《 "true" 《 endl;
}
else
{
cout 《 "false" 《 endl;
}


Это сообщение отредактировал(а) vol4ek - 25.1.2017, 00:08
PM MAIL ICQ   Вверх
vol4ek
Дата 25.1.2017, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: нет
Всего: 0



вот и стандарт
PM MAIL ICQ   Вверх
feodorv
Дата 25.1.2017, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(vol4ek @  25.1.2017,  00:10 Найти цитируемый пост)
вот и стандарт 

Сожалею, но BOOL и TRUE - это не стандарт)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
volatile
Дата 25.1.2017, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(feodorv @  25.1.2017,  06:04 Найти цитируемый пост)
BOOL и TRUE - это не стандарт

и даже более того, это чисто пользовательские типы, в языке С++ их вообще по сути нет.

речь выше шла об bool true и false

Добавлено через 7 минут и 57 секунд
Цитата(vol4ek @  25.1.2017,  00:10 Найти цитируемый пост)
вот и стандарт 

Цитата(ISO_IEC_14882_2011)

4.5 Integral promotions
...
6. A prvalue of type bool can be converted to a prvalue of type int, with false becoming zero and true becoming one.


PM MAIL   Вверх
azesmcar
Дата 25.1.2017, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(vol4ek @  24.1.2017,  22:26 Найти цитируемый пост)
но суть не меняется true и false не обязательно равны нулю и единице 

обязательно.
Код

#include <iostream>

int main()
{
    bool x = 10;
    std::cout << static_cast<int>(x) << std::endl;
}

можно правда добиться того, чтобы в bool было иное значение, но это уже извращение.
и кстати этот случай обработан блоком default.

Это сообщение отредактировал(а) azesmcar - 25.1.2017, 18:29
PM   Вверх
Roozan
Дата 27.1.2017, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.1.2017

Репутация: нет
Всего: нет



Спасибо всем, кто принимал участие, ваши советы мне помогли. Я добился решения этой проблемы таким способом (показала другая программа):
Код

#include <iostream>
using namespace std;

int main ()
{
    int a, b, f;
    double sum;
    int game;
    bool exit = true;
    while (exit == true)
    {
    cout << " Enter number a: ";
    cin >> a;
    cout << " Enter number b: ";
    cin >> b;
    cout << " Enter number f: ";
    cin >> f;
    sum = (a + b - f / a) + f * a * a - (a + b);
    cout << " Result is: " << " (a + b - f / а) + f * a * a - (a + b) = " << sum << endl;
    cout << " \nContinue? ";
    cin >> game;
    switch (game)
    {
        case 1: exit == true;
        break;
        case 0: exit == false;
        break;
        default:
            {
                cout << " You need enter button 1 or 0: ";
                cin >> game;
            }
    }
    }
    return 0;
}


Это сообщение отредактировал(а) Roozan - 27.1.2017, 11:51
PM MAIL   Вверх
xvr
Дата 27.1.2017, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Да уж, помогли  smile 
Код

        case 1: exit == true;
        break;
        case 0: exit == false;

И действительно выходит из цикла ? Не верю! (Станиславский)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0845 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.