Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

К переменной username применяется некорректная кодировка, хоть и указано в главном блоке кодировка RU.

Артур Кириллов Профи (656), на голосовании 2 недели назад
#include <iostream>
#include <random>
#include <Windows.h>
#include <array>
#include <thread>
#include <sstream>
typedef std::string string_t;
#define cout_d std::cout
#define cin_d std::cin
#define endl_d std::endl
#define cls_d system("cls")
int generateRandomNumber(int range_min, int range_max) {
int random_number;
std::random_device rd;
std::mt19937 generator(rd());
std::uniform_int_distribution<> distribution(range_min, range_max);
random_number = distribution(generator);
return random_number;
}
float getResponseTime(std::atomic<bool>& is_process_input) {
float response_time = 0.0f;
while (true) {
if (!is_process_input) break;
Sleep(100);
response_time += 0.1f;
}
return response_time;
}
class UserResult {
public:
string_t example;
unsigned short right_answer;
int user_answer;
float response_time;
bool error_answer;
UserResult() : example(""), right_answer(0), user_answer(0), response_time(0), error_answer(0) {}
UserResult(string_t param1, unsigned short param2, int param3, float param4, bool param5) {
example = param1;
right_answer = param2;
user_answer = param3;
response_time = param4;
error_answer = param5;
}
};
int main() {
setlocale(LC_ALL, "RU");
const unsigned short range_min = 1, range_max = 10;
unsigned int random_number1, random_number2, right_answer, user_answer, example_number, quantity_right_answers = 0;
float response_time, total_time = 0.0f;
std::atomic<bool> is_process_input;
bool error_answer;
string_t user_name; <-------------------
cout_d << "Введите ваше имя: ";
cin_d >> user_name;
std::array<UserResult, 10> user_results_array;
for (int i = 0; i < user_results_array.size(); i++) {
random_number1 = generateRandomNumber(range_min, range_max);
random_number2 = generateRandomNumber(range_min, range_max);
right_answer = random_number1 * random_number2;
is_process_input = true;
std::stringstream example;
example << random_number1 << " * " << random_number2;
std::thread timer_thread([&]() { response_time = getResponseTime(is_process_input); });
cls_d;
cin_d >> user_answer;
is_process_input = false;
timer_thread.join();
if (user_answer != right_answer) error_answer = true;
else error_answer = false;
user_results_array[i] =
UserResult (
example.str(),
right_answer,
user_answer,
response_time,
error_answer
);
}
cls_d;
for (int i = 0; i < user_results_array.size(); i++) {
example_number = i + 1;
cout_d << "Ответ " << user_name << ": " << user_results_array[i].user_answer << endl_d;
}
for (int i = 0; i < user_results_array.size(); i++) {
total_time += user_results_array[i].response_time;
if (user_results_array[i].error_answer == 0) quantity_right_answers += 1;
}
return 0;
} Много кода было вырезано, т.к. мыло не пропускало
Голосование за лучший ответ
Похожие вопросы