-8 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 52
1

Программа которая выводит пример на умножение двух однозначных чисел

19.11.2011, 00:14. Показов 10942. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброй ночи форумчане! Помогите пожалуйста с задачкой.
Условие:
Написать программу которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение "Правильно!" или "Вы ошиблись", и правильный результат. Ниже приведен рекомендуемый вид экрана во время выполнения программы.
----------------------------------------------------------------------------------------
Сколько будет 6*7?
Введите ответ и нажмите <Enter>
->56
Вы ошиблись.6*7=42
----------------------------------------------------------------------------------------
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2011, 00:14
Ответы с готовыми решениями:

Пример на умножение двух однозначных чисел, запрос и проверка ответа пользователя (C++ Builder)
Написать программу, которая выводит пример на умножение двух однозначных чисел, запрашивает ответ...

Пример на умножение 2-х случайных однозначных чисел
Написать программу, которая, используя генератор случайных величин выводит на экран пример на...

Умножение двух случайных однозначных чисел
Программа, выводит пример на умножение двух случайных однозначных чисел, запрашивает ответ...

Умножение двух случайных однозначных чисел
Помогите с программой плиз. Вот условие: &quot;Написать программу, которая выводит пример на умножение...

2
14 / 14 / 4
Регистрация: 17.10.2011
Сообщений: 54
19.11.2011, 00:28 2
Лучший ответ Сообщение было отмечено krexx как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <time.h>
using namespace std;
void main(){
    srand(unsigned(time(NULL)));
    setlocale(LC_ALL,"rus");
    int c, a=rand()%9+1, b=rand()%9+1;
    cout<<"Сколько будет "<<a<<'*'<<b<<endl;
    cin>>c;
    if(c==a*b) cout<<"Правильно!"<<endl;
    else cout<<"Вы ошиблись\n"<<a<<'*'<<b<<'='<<a*b<<endl;}
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.11.2011, 01:02 3
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
#include <string>
#include <map>
#include <cstdlib>
#include <random>
#include <algorithm>
#include <functional>
#include <sstream>
 
class Test
{
public:
   Test(int min, int max):operations("+-*/")
   {
      init_test(min, max);
      std::for_each(operations.begin(), operations.end(), [this, &functions] (const char c)
      {
         switch(c)
         {
            case '+':
               functions.insert(std::make_pair(c, [](int first, int second) {return first + second;}));
               break;
            case '-':
               functions.insert(std::make_pair(c, [](int first, int second) {return first - second;}));
               break;
            case '*':
               functions.insert(std::make_pair(c, [](int first, int second) {return first * second;}));
               break;
            case '/':
               functions.insert(std::make_pair(c, [](int first, int second) {return static_cast<double>(first) / second;}));
               break;
            default:
               break;
         }
      });
   }
   std::string next ()
   {
      first_arg = numbers(gen);
      second_arg = numbers(gen);
      current_oper = operations[opers(gen)];
      if (current_oper == '/')
      {
         while (!second_arg)
         {
            second_arg = numbers(gen);
         }
      }
      compute_answer();
      std::stringstream ss;
      ss << first_arg << current_oper << second_arg << '=';
      return ss.str();
   }
   std::string check_answer(double answer)
   {
      std::stringstream ss;
      ss << first_arg << current_oper << second_arg << '=' << right_answer;
      return codes[right_answer == answer] + ":" + ss.str();
   }
private:
   void init_test(int min, int max)
   {
      gen = std::mt19937(time(0));
      numbers = std::uniform_int_distribution<>(min, max);
      opers = std::uniform_int_distribution<>(0, operations.size() - 1);
      codes = std::map<bool, std::string>
      {
         std::make_pair(true, "You are right"),
         std::make_pair(false, "You are wrong")
      };
   }
   void compute_answer()
   {
      right_answer = functions[current_oper](first_arg, second_arg);
   }
   static std::map<bool, std::string> codes;
   std::map<char, std::function<double(int, int)>> functions;
   std::string operations;
   std::uniform_int_distribution<> numbers;
   std::uniform_int_distribution<> opers;
   int first_arg;
   int second_arg;
   char current_oper;
   double right_answer;
   static std::mt19937 gen;
};
 
std::map<bool, std::string> Test::codes;
std::mt19937 Test::gen;
 
int main()
{
   const int attempts = 10;
   Test tst(0, 9);
   for (size_t i = 0; i < attempts; ++i)
   {
      double answer = 0;
      std::cout << tst.next();
      std::cin >> answer;
      std::cout << tst.check_answer(answer) << std::endl;
   }
}
0
19.11.2011, 01:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2011, 01:02
Помогаю со студенческими работами здесь

Написать программу, которая выводит на экран пример на вычитание двух чисел
Помогите пожалуйста с задачей Вот условие: Написать программу, которая выводит на экран пример...

Программа, которая по прерыванию на входе INT1 (OMK-51) выводит разницу двух чисел на линии порта 2
Пожалуйста, помогите создать программу, которая по прерыванию на входе INT1 (OMK-51) выводит...

Программа которая выводит пример на вычитание
Всем добрый день, нужна помощь, есть пару вопросов по задаче Условие: Написать программу которая...

Программа, которая находит и выводит наибольшую сумму двух соседних элементов, которая не кратна 3
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать значения от -10 000 до...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru