@V0X31

Не могу найти ошибку в коде на C++?

Решил написать бот с системой кармы, которая меняется в зависимости от решений юзера, и столкнулся с проблемой:после первого вопроса переменная будто присваивается 0. Помогите пожалуйста.
#include <iostream>
#include <Windows.h>

int ans;

using namespace std;
void firstQST()
{
    setlocale(LC_ALL, "Russian");
    while (ans != 1 or ans != 2) {
        cin >> ans;
        if (ans == 2) {
            cout << "Братка:)" << endl;
            break;
        }
        if (ans == 1) {
            cout << "Ну что ж, начнём:(" << endl;
            break;
        }
        if (ans != 1 and ans != 2) { cout << "Используй только цифры 1 и 2 для ответа." << endl; }
    }
}
void secondQST()
{
    setlocale(LC_ALL, "Russian");
    while (ans != 1 or ans != 2) {
        cin >> ans;
        if (ans == 2) {
            cout << "Я тут решаю, о чём мы будем говорить" << endl;
            break;
        }
        if (ans == 1) {
            cout << "Правильный выбор ;)" << endl;
            break;
        }
        if (ans != 1 and ans != 2) { cout << "Используй только цифры 1 и 2 для ответа." << endl; }
    }
}
int main()
{
    setlocale(LC_ALL, "Russian");
    int karma = 0;                                                                                                                 //Карма(тут всё понятно)
    int LATENCY_TIME = 500;                                                                                                        //Задержка вывода текста
    int test;
    
    
    cout << "Следующие несколько минут тебе предстоит общение с ботом, который понимает только 2 варианта ответа." << endl;         // Инструкция
    Sleep(LATENCY_TIME);
    cout << "Используй только цифры 1 и 2 для ответа." << endl;
    Sleep(LATENCY_TIME);
    cout << "По оканчании общения бот решит давать ли тебе доступ к *ЗАСЕКРЕЧЕНО*" << endl;
    Sleep(LATENCY_TIME);
    cout << "P.S. Бот не несёт цели оскорбить кого-либо. " << endl;
    Sleep(LATENCY_TIME);
    cout << "Ты готов начать?" << endl;
    cout << "1.Да. 2.Нет." << endl;
    cin >> ans;
    if (ans != 1) {
        while (ans != 1) {
            cout << "Когда захочешь начать, нажми '1'" << endl;
            cin >> ans;
        }
    }



    cout << "Ас саляму алейкум" << endl;                                                                                                // 1 Вопрос
    cout << "1.Привет 2.Ва алейкум ас-салам" << endl;
    firstQST();
    if (ans == 2) { karma ++;}
    if (ans != 2) { karma --;}
    cout << karma << endl;



    cout << "О чём хочешь поговорить?" << endl;                                                                                         // 2 Вопрос
    cout << "1.О том, о чём хочешь ты 2.Свой вариант" << endl;
    if (ans == 1) { karma ++; }
    if (ans != 1 and ans != 2) { karma --; }
    secondQST();
    cout << karma << endl;
    return 0;
}
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
@olkhovich
Ошибка как раз во втором вопросе. Функцию нужно вызвать раньше "ифов"
cout << "О чём хочешь поговорить?" << endl;                                                                                         // 2 Вопрос
    cout << "1.О том, о чём хочешь ты 2.Свой вариант" << endl;
    secondQST();
    if (ans == 1) { karma++; }
    if (ans == 2) { karma--; }
    cout << karma << endl;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы