Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 12.02.2011
Сообщений: 37
1

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

15.02.2011, 19:42. Показов 2958. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здрасте=)
помогите написать код, если мона с комментами на эту задачу:
Вводится три числа. Вам нужно проверить можно ли поставить арифметический знак между двумя числами, чтобы в результате выполнения действия получилось третье.
Входные данные
Вводится три числа:  - 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
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2011, 19:42
Ответы с готовыми решениями:

Знак табуляции между числами
помогите доделать программу: нужно поставить знак табуляции перед и после каждого числа(одну цифру...

Символ между двумя числами в scanf
Может кто-нибудь объяснить почему так не работает, а при добавлении числа работает: #include...

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

Как взять разность по модулю между двумя числами int?
Суть в теме: "Как взять разность по модулю между двумя числами int?". Заранее спасибо :)

11
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();
}
1
1 / 1 / 0
Регистрация: 12.02.2011
Сообщений: 37
15.02.2011, 21:18  [ТС] 3
со вторым вариантом проблемы не компилируется(
0
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
15.02.2011, 23:44 4
это наброски, доработай просто
1
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
0
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
16.02.2011, 16:07 6
Все верно, просто хотел идею подкинуть автору и не уследил
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
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;
}
0
1 / 1 / 0
Регистрация: 12.02.2011
Сообщений: 37
16.02.2011, 18:05  [ТС] 8
неа чуваки, вы не поняли!
не нужно только с использовать как третье число.
все возможные варианты примеров!
с/a=b
c/b=a;
c-a=b;
ну итд...и если не возможно сделать ни одного действия вывести NO SOLUTION
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
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;
}
0
25 / 9 / 0
Регистрация: 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;
0
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
16.02.2011, 19:14 11
}{()$T, да.. я был невнимателен. невысыпаюсь.
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
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);
}
0
17.02.2011, 11:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2011, 11:53
Помогаю со студенческими работами здесь

Вывод всех чисел, находящихся между двумя заданными числами
Задание: напишите программу, которая запрашивает у пользователя два числа и выводит на стандартное...

Определить, между какими числами поставить знак умножения
Дано 7 рандомных цифр. Где поставить между ними знак умножения, чтобы при сложении остальных цифр...

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

Поставить пробел между двумя словами
Вот часть такого-то кода: b = a.find(&quot;span&quot;, attrs={'class': 'vt_ec'}) #Execute Code bb =...


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

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