Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.76
krexx
-8 / 0 / 0
Регистрация: 23.01.2011
Сообщений: 52
19.11.2011, 00:14     Программа которая выводит пример на умножение двух однозначных чисел #1
Доброй ночи форумчане! Помогите пожалуйста с задачкой.
Условие:
Написать программу которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение "Правильно!" или "Вы ошиблись", и правильный результат. Ниже приведен рекомендуемый вид экрана во время выполнения программы.
----------------------------------------------------------------------------------------
Сколько будет 6*7?
Введите ответ и нажмите <Enter>
->56
Вы ошиблись.6*7=42
----------------------------------------------------------------------------------------
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 00:14     Программа которая выводит пример на умножение двух однозначных чисел
Посмотрите здесь:

Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел C++
Написать программу которая выводит пример на вычитание(предел 100) C++
C++ Программа которая выводит пример на вычитание
Написать программу, которая выводит пример на вычитание, запрашивает ответ пользователя, проверяет его и выводит сообщение о правильности C++
Умножение двух чисел в столбик C++
Разработать программу, которая изображает на экране монитора умножение столбиком двух введенных натуральных чисел C++
Пример на умножение двух однозначных чисел, запрос и проверка ответа пользователя (C++ Builder) C++
Написать программу , которая для двух одномерных массивов целых чисел выводит только те элементы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anonimious
13 / 13 / 2
Регистрация: 17.10.2011
Сообщений: 54
19.11.2011, 00:28     Программа которая выводит пример на умножение двух однозначных чисел #2
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;}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
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;
   }
}
Yandex
Объявления
19.11.2011, 01:02     Программа которая выводит пример на умножение двух однозначных чисел
Ответ Создать тему
Опции темы

Текущее время: 17:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru