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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ среднее арифметическое http://www.cyberforum.ru/cpp-beginners/thread243357.html
Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции f=(x*sin⁡ π/4) / (1-2x*(cos⁡ π)/4+x^2).
C++ Работа с файлами Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл F, содержащий сведения об учениках школы. Выяснить, имеются ли в школе однофамильцы, имеются ли однофамильцы в каком-нибудь классе. Нужен код на С. Зараннее спасибо! http://www.cyberforum.ru/cpp-beginners/thread243350.html
Задача про ранец C++
Помогите решить задачу на С Есть вес предметов и ценность, а также есть максимальный вес, который можно загрузить в ранец! Необходимо заполнить ранец так, чтобы стоимость предметов была максимальной и вес не привышал максимальный вес, который можно загрузить в ранец! Спасибо! Буду очень благодарна!
C++ Структуры
1-решить задачу, используя структуру point для хранения координат точки : Наийти три разлинные точки из заданного множества точек, образющих треугольник наибольшего периметра. 2-Решить задачу, используя структуру содержащую члены-данные и члены функции На основе данных входного файла составить список студентов, включающий фамилмю, факультет, курс, группу, 5 оценок.Вывести в новый файл...
C++ Корни квадратного уравнения,массив и среднее арифметическое http://www.cyberforum.ru/cpp-beginners/thread243318.html
1.Вычислить корни квадратного уравнения ax^2+bx+c=0. 2.Вычислить сумму и количество положительных элементов массива X.X-действительные числа. 3.Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции f=(x*sin⁡ π/4) / (1-2x*(cos⁡ π)/4+x^2).
C++ Решить с оператором while помогите пожалуйста решить прогу, используя в прогрумме оператор while. Условие:Пасажирский самолет может поднять груз общим весом 30тон. Составить программу для определения веса почтового груза, который может поместить в самолет после пасадки пассажиров и загрузки их багажа. Во время регистрации пасажиров ЭВМ должна считывать колличество пасажиров(условный вес одного человека 100 кг.) ... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
17.02.2011, 11:53     нужно проверить и поставить арифметический знак между двумя числами
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);
}
 
Текущее время: 21:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru