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

нужно проверить и поставить арифметический знак между двумя числами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
kolia123456
-51 / 1 / 1
Регистрация: 12.02.2011
Сообщений: 37
15.02.2011, 19:42     нужно проверить и поставить арифметический знак между двумя числами #1
здрасте=)
помогите написать код, если мона с комментами на эту задачу:
Вводится три числа. Вам нужно проверить можно ли поставить арифметический знак между двумя числами, чтобы в результате выполнения действия получилось третье.
Входные данные
Вводится три числа:  - 1000000000 ≤ a, b, c ≤ 1000000000.
Выходные данные
Выведите равенство полностью. Знаки (+ плюс, - минус, * умножить, / делить). Вывести все варианты решения. Если решений нет выведите NO SOLUTION. (См. примеры). ВНИМАНИЕ! От перемены мест слагаемых и множителей результат не меняется. Поэтому если a+b=c и b+a=c не надо выводить оба варианта. Нужно вывести только один. Тоже самое с a*b=c.
Н-р:
Входные данные
1 1 0
Выходные данные
a-b=c
c+b=a
a-c=b
b-a=c
c+a=b
b-c=a
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2011, 19:42     нужно проверить и поставить арифметический знак между двумя числами
Посмотрите здесь:

C++ Массив, нахождене разности между двумя числами
Как взять разность по модулю между двумя числами int? C++
C++ Вывод всех чисел, находящихся между двумя заданными числами
C++ Написать программу для вывода максимальной разницы между двумя соседними простыми числами в каждом миллионном массиве
Нужно определить количество путей между двумя вершинами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yukas
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
15.02.2011, 20:05     нужно проверить и поставить арифметический знак между двумя числами #2
так и делай-)

C++
1
2
3
4
5
6
7
8
9
10
11
void main()
{
   int a,b,c;
   cin>> a >> b >> c<<endl;
   if(a + b == c)cout<<"a + b = c!"<<endl;
   .
   .
   .
   if(a * b == c)cout<<"a * b = c!"<<endl;
   getch();
}
Добавлено через 2 минуты
а лучше даже:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main()
{
   int a,b,c;
   cin>> a >> b >> c<<endl;
   switch(c)
   {
      case (a + b):cout<<"a + b = c!"<<endl;break;
      .
      .
      .
      case(a * b):cout<<"a * b = c!"<<endl;break;
      default:cout<<"No solution!"<<endl;
   }
   getch();
}
kolia123456
-51 / 1 / 1
Регистрация: 12.02.2011
Сообщений: 37
15.02.2011, 21:18  [ТС]     нужно проверить и поставить арифметический знак между двумя числами #3
со вторым вариантом проблемы не компилируется(
yukas
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
15.02.2011, 23:44     нужно проверить и поставить арифметический знак между двумя числами #4
это наброски, доработай просто
S1av0k
8 / 8 / 0
Регистрация: 25.01.2011
Сообщений: 21
16.02.2011, 15:25     нужно проверить и поставить арифметический знак между двумя числами #5
1)
C++
1
void main()
не соответствует стандартам С++.
Нужно использовать
C++
1
2
3
4
5
6
int main()
{
     //...
 
return 0;
}
2)
Хм...
C++
1
int с = a/b;
??? тогда уж float или double
yukas
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
16.02.2011, 16:07     нужно проверить и поставить арифметический знак между двумя числами #6
Все верно, просто хотел идею подкинуть автору и не уследил
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
16.02.2011, 16:48     нужно проверить и поставить арифметический знак между двумя числами #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
     double a,b,c;
     cout <<"Vvedite 3 chisla: ";
     cin >> a >> b >>c;
     if(a+b==c) cout<<"a+b="<<c<<endl; else cout<<"A+B = No solution."<<endl;
     if(a*b==c) cout<<"a*b="<<c<<endl; else cout<<"A*B = No solution."<<endl;
     if(a/b==c) cout<<"a/b="<<c<<endl; else cout<<"A/B = No solution."<<endl;
     if(b/a==c) cout<<"b/2="<<c<<endl; else cout<<"B/A = No solution."<<endl;
     if(b-a==c) cout<<"b-a="<<c<<endl; else cout<<"B-A = No solution."<<endl;
     if(a-b==c) cout<<"a-b="<<c<<endl; else cout<<"A-B = No solution."<<endl;
     getch();
     return 0;
}
kolia123456
-51 / 1 / 1
Регистрация: 12.02.2011
Сообщений: 37
16.02.2011, 18:05  [ТС]     нужно проверить и поставить арифметический знак между двумя числами #8
неа чуваки, вы не поняли!
не нужно только с использовать как третье число.
все возможные варианты примеров!
с/a=b
c/b=a;
c-a=b;
ну итд...и если не возможно сделать ни одного действия вывести NO SOLUTION
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
16.02.2011, 18:17     нужно проверить и поставить арифметический знак между двумя числами #9
Цитата Сообщение от kolia123456 Посмотреть сообщение
все возможные варианты примеров!
с/a=b
c/b=a;
c-a=b;
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
     double a,b,c;
     cout <<"Vvedite 3 chisla: ";
     cin >> a >> b >>c;
     if(a+b==c) cout<<"a+b="<<c<<endl; else cout<<"A+B = No solution."<<endl;
     if(a*b==c) cout<<"a*b="<<c<<endl; else cout<<"A*B = No solution."<<endl;
     if(a/b==c) cout<<"a/b="<<c<<endl; else cout<<"A/B = No solution."<<endl;
     if(b/a==c) cout<<"b/2="<<c<<endl; else cout<<"B/A = No solution."<<endl;
     if(b-a==c) cout<<"b-a="<<c<<endl; else cout<<"B-A = No solution."<<endl;
     if(a-b==c) cout<<"a-b="<<c<<endl; else cout<<"A-B = No solution."<<endl;
     if(a-c==b) cout<<"a-c="<<b<<endl; else cout<<"A-C = No solution."<<endl;
     if(b-c==a) cout<<"b-c="<<a<<endl; else cout<<"B-C = No solution."<<endl;
     if(c-a==b) cout<<"c-a="<<b<<endl; else cout<<"C-A = No solution."<<endl;
     if(c-b==a) cout<<"c-b="<<a<<endl; else cout<<"C-B = No solution."<<endl;
     if(c/b==a) cout<<"c/b="<<a<<endl; else cout<<"C/B = No solution."<<endl;
     if(c/a==b) cout<<"c/a="<<b<<endl; else cout<<"C/A = No solution."<<endl;
     if(b/c==a) cout<<"b/c="<<a<<endl; else cout<<"B/C = No solution."<<endl;
     if(a/c==b) cout<<"a/c="<<b<<endl; else cout<<"A/C = No solution."<<endl;
     getch();
     return 0;
}
}{()$T
 Аватар для }{()$T
25 / 9 / 2
Регистрация: 22.01.2011
Сообщений: 27
16.02.2011, 18:53     нужно проверить и поставить арифметический знак между двумя числами #10
instagib, небольшая доработка
C++
1
2
3
4
5
6
if(b!=0 && a/b==c) cout<<"a/b="<<c<<endl;
     if(c!=0 && a/c==b) cout<<"a/c="<<b<<endl;
     if(c!=0 && b/c==a) cout<<"b/c="<<a<<endl;
     if(a!=0 && b/a==c) cout<<"b/a="<<c<<endl;
     if(b!=0 && c/b==a) cout<<"c/b="<<a<<endl;
     if(a!=0 && c/a==b) cout<<"c/a="<<b<<endl;
плюс еще варианты
C++
1
2
3
4
if(a+c==b) cout<<"a+c="<<b<<endl;
if(b+c==a) cout <<"b+c="<<a<<endl;
if(a*c==b) cout<<"a*c="<<b<<endl;
if(b*c==a) cout<<"b*c="<<a<<endl;
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
16.02.2011, 19:14     нужно проверить и поставить арифметический знак между двумя числами #11
}{()$T, да.. я был невнимателен. невысыпаюсь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2011, 11:53     нужно проверить и поставить арифметический знак между двумя числами
Еще ссылки по теме:

C++ Знак табуляции между числами
C++ Вычислить сумму всех целых чисел, лежащих между двумя целыми числами, выбранными пользователем
C++ Найти сумму между двумя введенными числами, включая эти числа

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2799 / 1575 / 246
Регистрация: 03.05.2010
Сообщений: 3,656
17.02.2011, 11:53     нужно проверить и поставить арифметический знак между двумя числами #12
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
/////////////////////////////////////////////////////////////////////////////////////////
//Вводится три числа. Вам нужно проверить можно ли поставить арифметический знак 
//между двумя числами, чтобы в результате выполнения действия получилось третье.
//Входные данные
//Вводится три числа:  - 1000000000 ≤ a, b, c ≤ 1000000000.
//Выходные данные
//Выведите равенство полностью. Знаки (+ плюс, - минус, * умножить, / делить). 
//Вывести все варианты решения. Если решений нет выведите NO SOLUTION. (См. примеры). 
//ВНИМАНИЕ! От перемены мест слагаемых и множителей результат не меняется. 
//Поэтому если a+b=c и b+a=c не надо выводить оба варианта. Нужно вывести только один. 
//Тоже самое с a*b=c.
//Н-р:
//Входные данные
//1 1 0
//Выходные данные
//a-b=c
//c+b=a
//a-c=b
//b-a=c
//c+a=b
//b-c=a 
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string                T_str;
typedef T_str                      T_name;
typedef int                        T_value;
typedef std::map<T_name, T_value>  T_values;
typedef std::vector<T_name>        T_names;
typedef T_str                      T_eq;
typedef std::set<T_eq>             T_eqs_set;
/////////////////////////////////////////////////////////////////////////////////////////
T_eq  make_eq
    (
        char           op_symb,
        const T_name&  X,
        const T_name&  Y,
        const T_name&  Z
    )
{
    return  X + " " + op_symb + " " + Y + " = " + Z;
}
/////////////////////////////////////////////////////////////////////////////////////////
T_value  func
    (
        char     op_symb,
        T_value  V,
        T_value  W        
    )
{
    switch(op_symb)
    {
    case '+': return V + W;
    case '-': return V - W;
    case '*': return V * W;    
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
bool  eq_val
    (
        char           op_symb,
        const T_name&  X,
        const T_name&  Y,
        const T_name&  Z,
        T_values&      val
    )
{ 
    if(op_symb == '/')
    {        
        return val[Y] && eq_val('*', Y, Z, X, val);
    }
 
    return func(op_symb, val[X], val[Y]) == val[Z];
}
/////////////////////////////////////////////////////////////////////////////////////////
void  try_insert_eq
    (
        char             op_symb,
        const T_name&    X,
        const T_name&    Y,
        const T_name&    Z,
        T_values&        val,
        T_eqs_set&       eqs_set
    )
 
{
    if(eq_val(op_symb, X, Y, Z, val))
    {       
        eqs_set.insert( make_eq(op_symb, X, Y, Z) );   
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
void  add_equations
    (
        T_values&        val, 
        const T_names&   nam,
        T_eqs_set&       eqs_set
    )
{
    const T_name&  X = nam[0];
    const T_name&  Y = nam[1];
    const T_name&  Z = nam[2];
 
    try_insert_eq('+', X, Y, Z, val, eqs_set);
    try_insert_eq('-', X, Y, Z, val, eqs_set);
    try_insert_eq('-', Y, X, Z, val, eqs_set);
    try_insert_eq('*', X, Y, Z, val, eqs_set);
    try_insert_eq('/', X, Y, Z, val, eqs_set);
    try_insert_eq('/', Y, X, Z, val, eqs_set);
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_all_equations
    (
        T_values&        val, 
        const T_names&   nam
    )
{
    T_eqs_set  eqs_set;
    T_names    nam_cur(nam);
    do
    {
        add_equations(val, nam_cur, eqs_set);
        std::rotate(nam_cur.begin(), nam_cur.end() - 1, nam_cur.end());
    }while(nam_cur != nam);
 
    T_str  line(12, '=');    
 
    std::cout << line
              << std::endl;
 
    if(eqs_set.empty())
    {
        std::cout << "NO SOLUTION"
                  << std::endl;
    }
    else
    {
        std::copy(eqs_set.begin(), eqs_set.end(), 
                  std::ostream_iterator<T_eq>(std::cout, "\n"));
    }
 
    std::cout << line
              << std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int  input_int(const T_str&  prompt, int  mod_max)
{  
    int  val = 0;
    for(;;)
    {
        std::cout << prompt;
        std::cin >> val;
        if(abs(val) <= mod_max)
        {
            return  val;
        }
    }    
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    
    const  int  VARS_TOTAL   = 3;
    const  int  VAR_MOD_MAX  = 1000000000;
    std::cout << "Введите целые числа не привышающие по модулю " 
              << VAR_MOD_MAX 
              << ":"
              << std::endl;
 
    T_values  val;
    T_names   nam;
    
    for(int  i = 0; i < VARS_TOTAL; ++i)
    {       
        T_name  name(1, 'a' + i);        
        val[name] = input_int(name + " = ", VAR_MOD_MAX);
        nam.push_back(name);
    }
 
    print_all_equations(val, nam);
}
Yandex
Объявления
17.02.2011, 11:53     нужно проверить и поставить арифметический знак между двумя числами
Ответ Создать тему
Опции темы

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