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

Простой консольный калькулятор - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
unique594
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
07.09.2013, 22:50     Простой консольный калькулятор #1
Я новичок, изучаю C++ всего первый день, начал изучение по книге Либерти "C++ за 21 день". Пока что из всех полученных мною знаний я попытался создать своеобразный мультифункционный калькулятор.

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
#include <iostream>
using namespace std;
 
 
int Plus (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x+y);
}
 
int Minus (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x-y);
}
 
int Delenie (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x/y);
}
 
int Umnoj (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x*y);
}
 
int Plusx()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Plus(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
    
 
int Minusx()
{
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Minus(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int Umnojx()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Umnoj(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int Deleniex()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Delenie(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int main()
{
    cout << "Kalkulator.\n";
    cout << "Kakoe deustvie vi hotite proizvesti?\n";
    cout << "1. Slojenie \n";
    cout << "2. Vichitanie \n";
    cout << "3. Umnojenie \n";
    cout << "4. Delenie \n";
    
    int choice;
    cin >> choice;
    if (choice = 1)
    cout << Plusx;
    if (choice = 2)
    cout << Minusx;
    if (choice = 3)
    cout << Umnojx;
    if (choice = 4)
    cout << Deleniex;
    return main();
}
Написал код, но при выборе действия попросту вылетает. Подскажите в чем проблема?
Может я вообще полную хрень написал
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
07.09.2013, 22:55     Простой консольный калькулятор #2
Для начала вот так
1. return 0 в конце main()
2. скобки после функций
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
#include <iostream>
using namespace std;
 
 
int Plus (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x+y);
}
 
int Minus (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x-y);
}
 
int Delenie (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x/y);
}
 
int Umnoj (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x*y);
}
 
int Plusx()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Plus(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
    
 
int Minusx()
{
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Minus(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int Umnojx()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Umnoj(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int Deleniex()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Delenie(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int main()
{
    cout << "Kalkulator.\n";
    cout << "Kakoe deustvie vi hotite proizvesti?\n";
    cout << "1. Slojenie \n";
    cout << "2. Vichitanie \n";
    cout << "3. Umnojenie \n";
    cout << "4. Delenie \n";
    
    int choice;
    cin >> choice;
    if (choice == 1)
    cout << Plusx();
    if (choice == 2)
    cout << Minusx();
    if (choice == 3)
    cout << Umnojx();
    if (choice == 4)
    cout << Deleniex();
    return 0;
}
Belfegor
Ghost
 Аватар для Belfegor
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
07.09.2013, 22:57     Простой консольный калькулятор #3
Цитата Сообщение от unique594 Посмотреть сообщение
Либерти "C++ за 21 день"

Не по теме:

спалите и развейте

unique594
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
07.09.2013, 23:03  [ТС]     Простой консольный калькулятор #4
Цитата Сообщение от GoldenChild Посмотреть сообщение
Для начала вот так
1. return 0 в конце main()
2. скобки после функций
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
#include <iostream>
using namespace std;
 
 
int Plus (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x+y);
}
 
int Minus (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x-y);
}
 
int Delenie (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x/y);
}
 
int Umnoj (int x, int y)
{
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return (x*y);
}
 
int Plusx()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Plus(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
    
 
int Minusx()
{
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Minus(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int Umnojx()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Umnoj(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int Deleniex()
{
    
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Delenie(a,b);
    cout << "\n Otvet: " << c;
    return 0;
}
 
int main()
{
    cout << "Kalkulator.\n";
    cout << "Kakoe deustvie vi hotite proizvesti?\n";
    cout << "1. Slojenie \n";
    cout << "2. Vichitanie \n";
    cout << "3. Umnojenie \n";
    cout << "4. Delenie \n";
    
    int choice;
    cin >> choice;
    if (choice == 1)
    cout << Plusx();
    if (choice == 2)
    cout << Minusx();
    if (choice == 3)
    cout << Umnojx();
    if (choice == 4)
    cout << Deleniex();
    return 0;
}
Теперь не вылетает, но выдает странные ответы. 2+3=50 или же 6/2=80.
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
07.09.2013, 23:03     Простой консольный калькулятор #5
Так же лучше вместить все действия в 1 функцию, потому что это точно в стиле "21 день"
unique594
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
07.09.2013, 23:04  [ТС]     Простой консольный калькулятор #6
Цитата Сообщение от GoldenChild Посмотреть сообщение
Так же лучше вместить все действия в 1 функцию, потому что это точно в стиле "21 день"
спасибо, попробую
GoldenChild
28 / 28 / 4
Регистрация: 12.06.2013
Сообщений: 65
07.09.2013, 23:06     Простой консольный калькулятор #7
Цитата Сообщение от unique594 Посмотреть сообщение
Теперь не вылетает, но выдает странные ответы. 2+3=50 или же 6/2=80.
0 выводит так как вы сделали функции которые возвращают 0 и выводите их сразу после результата без пробела
Вот так оно хотя бы работает, но делать по 2 функции - это ужас
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
#include <iostream>
using namespace std;
 
 
int Plus (int x, int y) {
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return x+y;
}
 
int Minus (int x, int y) {
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return x-y;
}
 
double Delenie (int x, int y) {
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return x/y;
}
 
int Umnoj (int x, int y) {
    cout << "Vi vveli chisla " << x << " i " << y << "\n";
    return x*y;
}
 
void Plusx() {
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c = Plus(a,b);
    cout << "\n Otvet: " << c << endl;
}
    
 
void Minusx() {
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c = Minus(a,b);
    cout << "\n Otvet: " << c << endl;
}
 
void Umnojx() {
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c = Umnoj(a,b);
    cout << "\n Otvet: " << c << endl;
}
 
void Deleniex() {
    int a, b, c;
    cout << "Vvedite dva chisla: ";
    cin >> a;
    cin >> b;
    c=Delenie(a,b);
    cout << "\n Otvet: " << c << endl;
}
 
int main() {
    cout << "Kalkulator.\n";
    cout << "Kakoe deustvie vi hotite proizvesti?\n";
    cout << "1. Slojenie \n";
    cout << "2. Vichitanie \n";
    cout << "3. Umnojenie \n";
    cout << "4. Delenie \n";
    
    int choice;
    cin >> choice;
    if (choice == 1) Plusx();
    if (choice == 2) Minusx();
    if (choice == 3) Umnojx();
    if (choice == 4) Deleniex();
    system("pause");
    return 0;
}
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
07.09.2013, 23:21     Простой консольный калькулятор #8
Цитата Сообщение от unique594 Посмотреть сообщение
#include <iostream>
#include <Windows.h>
using namespace std;
int Plus (int x, int y)
{
* * cout << "Vi vveli chisla " << x << " i " << y << "\n";
* * return (x+y);
}
int Minus (int x, int y)
{
* * cout << "Vi vveli chisla " << x << " i " << y << "\n";
* * return (x-y);
}
double Delenie (int x, int y)
{
* * cout << "Vi vveli chisla " << x << " i " << y << "\n";
* * return (x/y);
}
int Umnoj (int x, int y)
{
* * cout << "Vi vveli chisla " << x << " i " << y << "\n";
* * return (x*y);
}
int Plusx()
{
int a, b, c;
* * cout << "Vvedite dva chisla: ";
* * cin >> a;
* * cin >> b;
* * c=Plus(a,b);
* * cout << "\n Otvet: " << c << endl;
}
int Minusx()
{
* * int a, b, c;
* * cout << "Vvedite dva chisla: ";
* * cin >> a;
* * cin >> b;
* * c=Minus(a,b);
* * cout << "\n Otvet: " << c << endl;
}
int Umnojx()
{
int a, b, c;
* * cout << "Vvedite dva chisla: ";
* * cin >> a;
* * cin >> b;
* * c=Umnoj(a,b);
* * cout << "\n Otvet: " << c;
}
int Deleniex()
{
int a, b;
double c;
* * cout << "Vvedite dva chisla: ";
* * cin >> a;
* * cin >> b;
* * c=Delenie(a,b);
* * cout << "\n Otvet: " << c << endl;*
}
int main()
{
* * cout << "Kalkulator.\n";
* * cout << "Kakoe deustvie vi hotite proizvesti?\n";
* * cout << "1. Slojenie \n";
* * cout << "2. Vichitanie \n";
* * cout << "3. Umnojenie \n";
* * cout << "4. Delenie \n";
int choice;
* * cin >> choice;
* * if (choice == 1)
* * cout << Plusx;
* * if (choice == 2)
* * cout << Minusx;
* * if (choice == 3)
* * cout << Umnojx;
* * if (choice == 4)
* * cout << Deleniex;
* * return 1;
system("Pause");
}
аав

Добавлено через 1 минуту
Цитата Сообщение от GoldenChild Посмотреть сообщение
Так же лучше вместить все действия в 1 функцию, потому что это точно в стиле "21 день"
Улыбнуло
Belfegor
Ghost
 Аватар для Belfegor
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
07.09.2013, 23:28     Простой консольный калькулятор #9
Цитата Сообщение от GoldenChild Посмотреть сообщение
Так же лучше вместить все действия в 1 функцию, потому что это точно в стиле "21 день"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
template <typename T>
T Calc(T first, char sumb, T second) {
    return ((sumb == '+') ? first + second : (sumb == '-') ? first - second : (sumb == '*') ? first * second : first / second);
}
 
int main() {
    int a, b;
    char c;
    std::cin >> a >> c >> b;
    std::cout << Calc(a, c, b) << std::endl;
    return 0;
}
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
07.09.2013, 23:39     Простой консольный калькулятор #10
unique594, да, программа зверь, нельзя ли сделать побольше функций? что бы было еще сложнее все это читать.

Добавлено через 3 минуты
Belfegor, я вот смотрю на калькулятор автора и мне вот интересно он знает что такое template ну или хотя бы класс.

да кстати, грамотно придумано.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2013, 10:28     Простой консольный калькулятор
Еще ссылки по теме:

C++ Простой консольный конвертер валют - проверить корректность реализации
C++ Консольный калькулятор на вычитание
C++ Консольный калькулятор, в чем ошибка?

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

Или воспользуйтесь поиском по форуму:
unique594
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
08.09.2013, 10:28  [ТС]     Простой консольный калькулятор #11
Цитата Сообщение от VLK Посмотреть сообщение
unique594, да, программа зверь, нельзя ли сделать побольше функций? что бы было еще сложнее все это читать.

Добавлено через 3 минуты
Belfegor, я вот смотрю на калькулятор автора и мне вот интересно он знает что такое template ну или хотя бы класс.

да кстати, грамотно придумано.
не знаю никаких template
не изучил ещё это
Yandex
Объявления
08.09.2013, 10:28     Простой консольный калькулятор
Ответ Создать тему
Опции темы

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