Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387

калькулятор для счета в уме на скорость

11.07.2022, 02:50. Показов 1006. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, выдающую выражение:
столько то чисел и арифметические знаки между ними, на которое надо дать ответ в указанное время. Количество членов
выражения и таймер задаются с клавиатуры. Сумма либо разность и числа генерируются рандомно.

Например:
Введите количество переменных: 4
Введите максимальное количество цифр числа: 2
Введите таймер: 2

//таймер 2 секунды

12-43+45-97=_

Если вовремя (указанные секунды) пользователь не успел дать ответ, выходит сообщение: game over.
Иначе продолжает генерировать в указанных пределах. Будет чудесно, если программа будет отображать текущий счет. Просить написать программу с БД для сохранения результатов не буду, ибо наглость это уже. Сам доделаю. Нужна либо реализация, либо подсказка, что и как написать, чтобы реализовать данную программу.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
    setlocale(0,"");
    srand(time(0));
    double a,b,c;
    cout<<"Введите количество переменных: ";cin>>a;
    cout<<"Введите максимальное количество цифр числа: ";cin>>b;
    cout<<"Введите таймер: ";cin>>c;
    //...
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.07.2022, 02:50
Ответы с готовыми решениями:

Примеры для вычисления в уме
Найдите правильный ответ: sub(int x, int y, int *z) (*z=y-x) main() { int a,b,c; sub(10,5&amp;a); sub(7,a,&amp;b); sub(a,b,&amp;c);...

Addplus - моя первая математическая игра на скорость счета
https://play.google....addplus.android Необходимо выбирать шарики так, чтобы их сумма была равна 10. Игра заканчивается когда первый...

Задача про банковские счета (перевод с одного счета на другой)
Перевожу деньги с сберегательного счета на кредитный. Как сделать, чтобы баланс на кредитном счете увеличивался? public abstract...

4
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
11.07.2022, 03:03
засекай время от показа выражения до ответа
std::chrono

или с потоками поиграйся
std::thread

Добавлено через 35 секунд
Цитата Сообщение от karlhildekruger Посмотреть сообщение
Введите количество переменных: 4
Введите максимальное количество цифр числа: 2
Введите таймер: 2
Я бы люфт на ввод ответа добавил.
1
 Аватар для igorrr37
2893 / 2040 / 992
Регистрация: 21.12.2010
Сообщений: 3,790
Записей в блоге: 9
11.07.2022, 11:43
Лучший ответ Сообщение было отмечено karlhildekruger как решение

Решение

такой вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <chrono>
#include <thread>
#include <condition_variable>
#include <functional>
#include <string>
#include <mutex>
#include <climits>
using namespace std::chrono_literals;
 
std::condition_variable cv;
std::mutex mx;
 
void userInput(int& resUser)
{
    std::cin >> resUser;
    if (!std::cin)
    {
        std::cin.clear();
        std::cin.ignore(INT_MAX, '\n');
    }
    cv.notify_all();
}
 
int main()
{
    system("chcp 1251 > 0");
    srand((unsigned)time(0));
    int cvar, cdig, tim;
    std::cout << "Введите количество переменных: ";
    std::cin >> cvar;
    std::cout << "Введите максимальное количество цифр числа: ";
    std::cin >> cdig;
    std::cout << "Введите таймер: ";
    std::cin >> tim;
    std::string slim(cdig + 1, '0');
    slim[0] = '1';
    int lim = std::stoi(slim);
    
    std::pair<int, int> score;
    bool stop = false;
    while (!stop)
    {
        int res{}, resUser = INT_MIN;
        for (int i = 0; i < cvar; ++i)
        {
            int num = rand() % lim;
            int sgn = 1;
            if (i)
            {
                sgn = rand() % 2;
                std::cout << (sgn ? '+' : '-');
            }
            std::cout << num;
            sgn ? res += num : res -= num;
        }
        std::cout << "\n";
        std::unique_lock ul{ mx };
        std::thread t{ userInput, std::ref(resUser) };
        //std::this_thread::sleep_for(3s);
        bool pred = cv.wait_for(ul, std::chrono::duration<int>{ tim }, [&resUser]() {return resUser != INT_MIN; });
        ++score.second;
        if (res == resUser)
        {
            ++score.first;
        }
        std::cout << "score: " << score.first << "/" << score.second << "\n";
        if (!pred)
        {
            stop = true;
            std::cout << "game over\n";
        }
        t.join();
    }
}
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
11.07.2022, 12:16
igorrr37, я в потоках еще нулевой ? только один раз знакомился.
Я бы создавал поток, ожидания ответа, истек, след вопрос. И так на длину теста.
У вас похожа концепция, ведь так ?

Цитата Сообщение от igorrr37 Посмотреть сообщение
//std::this_thread::sleep_for(3s);
Это для какой то отладки использовалось?

Видел вы хорошо с потоками работаете ?
Что посоветуете из начального уровня (в потоках) почитать.
Знакомился, косвенно, из книги Мейерса (Effective C++), там я можно сказать ничего не понял.

Добавлено через 1 минуту
igorrr37, и в 63 строчке и происходит ожидание ответа ?
0
 Аватар для igorrr37
2893 / 2040 / 992
Регистрация: 21.12.2010
Сообщений: 3,790
Записей в блоге: 9
11.07.2022, 13:40
Цитата Сообщение от SmallEvil Посмотреть сообщение
из начального уровня (в потоках) почитать
Книги давно не читаю. Чтобы поверхностно ознакомиться с темой хватает статей из интернета. Ну а дальше - вот здесь
Цитата Сообщение от SmallEvil Посмотреть сообщение
в 63 строчке и происходит ожидание ответа ?
ожидание 24 строчки или истекания таймера - что произойдёт раньше
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.07.2022, 13:40
Помогаю со студенческими работами здесь

Интерфейс: Реализовать операции с банковским счетом (баланс счета, снятие средств, пополнение счета)...
Здравствуйте! Подскажите, как доделать код :-| Задача такая: дан интерфейс, необходимо сделать так, чтобы можно было получить информацию...

Организовать счетчик делитель частоты, с модулем счета 85, при достижений модуля счета сброс в ноль
Здравствуйте!У меня такая проблема:скоро сессия,паника в группе,никто не знает как решить эту задачу,ВЫ у меня последняя надежда!!! Мне...

Счёт в уме
В общем, хочу сделать тест вроде этого: http://math.kuznetsov.net.ru/. Допустим, пользователь выбирает уровень: лёгкий (сложение и...

Пополнение счета,после каждого обновления страницы добавляются просто так средства без оплаты никакого счета
&lt;?php /// db_payeer_insert if(isset($_POST)){ $sum = round(floatval($_POST),2); if($sum &gt; $mini){ $da =...

Как перемножить в уме 3243278470 и 91236491289
Где-то читал интервью с одним савантом, он умел производить в уме действия над гигантскими числами довольно быстро и точно. Когда спросили...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru