Answer the question
In order to leave comments, you need to log in
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
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 questionAsk a Question
731 491 924 answers to any question