Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
kolia123456
-51 / 1 / 1
Регистрация: 12.02.2011
Сообщений: 37
#1

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

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

здрасте=)
помогите написать код, если мона с комментами на эту задачу:
Вводится три числа. Вам нужно проверить можно ли поставить арифметический знак между двумя числами, чтобы в результате выполнения действия получилось третье.
Входные данные
Вводится три числа:  - 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2011, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос нужно проверить и поставить арифметический знак между двумя числами (C++):

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

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

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

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

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

Сумма всех целых чисел, лежащих между этими двумя числами - C++
Напишите программу, запрашивающую у пользователя ввод двух целых чисел. Затем программа должна вычислить и выдать сумму всех целых чисел,...

11
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();
}
1
kolia123456
-51 / 1 / 1
Регистрация: 12.02.2011
Сообщений: 37
15.02.2011, 21:18  [ТС] #3
со вторым вариантом проблемы не компилируется(
0
yukas
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
15.02.2011, 23:44 #4
это наброски, доработай просто
1
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
0
yukas
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
16.02.2011, 16:07 #6
Все верно, просто хотел идею подкинуть автору и не уследил
0
instagib
122 / 85 / 3
Регистрация: 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
kolia123456
-51 / 1 / 1
Регистрация: 12.02.2011
Сообщений: 37
16.02.2011, 18:05  [ТС] #8
неа чуваки, вы не поняли!
не нужно только с использовать как третье число.
все возможные варианты примеров!
с/a=b
c/b=a;
c-a=b;
ну итд...и если не возможно сделать ни одного действия вывести NO SOLUTION
0
instagib
122 / 85 / 3
Регистрация: 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
}{()$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;
0
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 340
16.02.2011, 19:14 #11
}{()$T, да.. я был невнимателен. невысыпаюсь.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2011, 11:53
Привет! Вот еще темы с ответами:

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

Вычислить сумму всех целых чисел, лежащих между двумя целыми числами, выбранными пользователем - C++
Прата, кто ж ещё. Решал сидел простенькую вроде задачку, а весь мозг себе взорвал. Почти решил, но где-то закралась ошибка. Что не так - не...

Написать программу для вывода максимальной разницы между двумя соседними простыми числами в каждом миллионном массиве - C++
требуется написать программу для вывода максимальной разницы между двумя соседними простыми числами в каждом миллионном массиве. т.е. с...

Нужно определить количество путей между двумя вершинами - C++
Разработать алгоритм определения общего количества путей между двумя заданными вершинами в графе.Буду очень благодарен


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru