Сделал маленькую программу, которая генерирует случайное число, и пользователю нужно его угадать. Код:
#include <iostream>
#include <time.h>
using namespace std;
void random(int zagadanoe)
{
zagadanoe = rand() % 10 + 1;
}
void main()
{
setlocale(LC_ALL, "Rus");
int zagadanoe;
int vvedennoe;
srand(time(NULL));
cout << "Привет. Я сгенерировал тебе случайное число от 1 до 10. Угадай какое это число." << endl;
cout << endl;
zagadanoe = rand() % 10 + 1;
cout << "Введи число: ";
cin >> vvedennoe;
cout << endl;
while (zagadanoe != vvedennoe)
{
cout << "Не правильно. Пробуй еще, я загадал тебе новое число." << endl;
cout << endl;
random(zagadanoe);
cin >> vvedennoe;
}
cout << "Ты угадал. Правильное число было = " << zagadanoe;
}
Программа генерирует случайное число от 1 до 10. Задался вопросом, как мне с помощью while или как нибудь по другому реализовать количество попыток для угадывания.
И еще проблема, в while. Когда мы неправильно вводим число, вызывается функция random(zagadanoe). Затем она генерирует случайное число (новое) идёт выход из функции, но, назад у while попадает прошлое число. Например, первое было сгенерировано 8, вызвалась функция random(zagadanoe) она сгенерировала 6, но по возвращению к while там осталась 8 (прошлое).
Расскажите, что я не так делаю?
Собственно, как нужно было сделать функцию random:
void random(int *zagadanoe)
{
*zagadanoe = rand() % 10 + 1;
}
И как ее вызывать:
random(&zagadanoe);
Если в этих механизмах что-то остаётся неясным рекомендую изучать типы памяти и указатели.
Организовать количество попыток угадывания можно следюущим способом:
int i = 0, attempts = 10; //i счётчик, attempts - количество попыток
while (zagadanoe != vvedennoe && i < attempts) // используем логическое И
//пока пользователь не отгадал и не исчерпал все попытки
{
i++; //в каждой итерации увеличиваем i на единицу
cout << "Не правильно. Пробуй еще, я загадал тебе новое число." << endl;
cout << endl;
random(&zagadanoe); // решение проблемы с random
cin >> vvedennoe;
}
Конечно, подобное лучше реализовывать через цикл for:
for (int i = 0; i < attempts && zagadanoe != vvedennoe; i++)
{
i++; //в каждой итерации увеличиваем i на единицу
cout << "Не правильно. Пробуй еще, я загадал тебе новое число." << endl;
cout << endl;
random(&zagadanoe); // решение проблемы с random
cin >> vvedennoe;
}
Ну и... транслит зло.
ты передаешь параметр в функцию random по значению, а нужно по ссылке, вызов твоей функции не меняет значения аргумента
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Наткнулся в интернете на реализацию сапера, но сразу понял, что работает он немного не так, как нужно(А точнее открывает с одного клика почти...
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме
Мне нужно чтобы выводилось Score: 0:0, а выводится так Score: 0Делаю так: