V
V
V0X312020-04-26 21:32:00
C++ / C#
V0X31, 2020-04-26 21:32:00

Can't find a bug in C++ code?

I decided to write a bot with a karma system that changes depending on the user's decisions, and ran into a problem: after the first question, the variable seems to be assigned 0. Please help.

#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;
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
O
olkhovich, 2020-04-26
@V0X31

The error is in the second question. The function must be called before the "ifs"

cout << "О чём хочешь поговорить?" << endl;                                                                                         // 2 Вопрос
    cout << "1.О том, о чём хочешь ты 2.Свой вариант" << endl;
    secondQST();
    if (ans == 1) { karma++; }
    if (ans == 2) { karma--; }
    cout << karma << endl;

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question