Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
unique594
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
1

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

07.09.2013, 22:50. Просмотров 2156. Ответов 12
Метки нет (Все метки)

Я новичок, изучаю 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();
}
Написал код, но при выборе действия попросту вылетает. Подскажите в чем проблема?
Может я вообще полную хрень написал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 22:50
Ответы с готовыми решениями:

Простой консольный калькулятор - не пойму, где ошибка
#include &lt;stdio.h&gt; int main() { float num1,num2,res,moreCalc; ...

Консольный калькулятор
Мне задали реализовать консольный калькулятор с выводом функций через...

Консольный калькулятор на вычитание
Здравствуйте. Помогите пожалуйста разобраться в двух ошибках. Самой трудно...

Доделать консольный калькулятор
Ребят. Вот есть такой недоделыш. Должно работать следующим способом: вы вводите...

Консольный калькулятор, в чем ошибка?
int main() { setlocale(0, &quot;&quot;); char input ; int value; cout &lt;&lt;...

12
GoldenChild
28 / 28 / 18
Регистрация: 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;
}
0
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
07.09.2013, 22:57 3
Цитата Сообщение от unique594 Посмотреть сообщение
Либерти "C++ за 21 день"

Не по теме:

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

0
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.
0
GoldenChild
28 / 28 / 18
Регистрация: 12.06.2013
Сообщений: 65
07.09.2013, 23:03 5
Так же лучше вместить все действия в 1 функцию, потому что это точно в стиле "21 день"
0
unique594
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 4
07.09.2013, 23:04  [ТС] 6
Цитата Сообщение от GoldenChild Посмотреть сообщение
Так же лучше вместить все действия в 1 функцию, потому что это точно в стиле "21 день"
спасибо, попробую
0
GoldenChild
28 / 28 / 18
Регистрация: 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;
}
0
Bend3r
149 / 136 / 35
Регистрация: 29.07.2012
Сообщений: 709
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 день"
Улыбнуло
0
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
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;
}
2
VLK
195 / 164 / 19
Регистрация: 05.05.2013
Сообщений: 1,199
07.09.2013, 23:39 10
unique594, да, программа зверь, нельзя ли сделать побольше функций? что бы было еще сложнее все это читать.

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

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

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

да кстати, грамотно придумано.
не знаю никаких template
не изучил ещё это
0
miros
0 / 0 / 0
Регистрация: 20.08.2017
Сообщений: 1
20.08.2017, 21:59 12
вот держи правильный экземпляр

#include <iostream.h>
#include <conio.h>
#include <stdio.h>


int Plus (int x, int y)
{
cout<<"вы ввели числа "<<x<<" и "<<y<<endl;
cout<<x<<"+"<<y<<"=";
return (x+y);
}

int Minus (int x, int y)
{
cout<<"вы ввели числа "<<x<<" и "<<y<<endl;
cout<<x<<"-"<<y<<"=";
return (x-y);
}

float Delenie (float x, float y)
{
cout<<"вы вели числа " <<x<<" и "<<y<<endl;
cout<<x<<"/"<<y<<"=";
return (x/y);
}

int Umnoj (int x, int y)
{
cout<<"вы ввели числа "<<x<<" и "<<y<<endl;
cout<<x<<"*"<<y<<"=";
return (x*y);
}

int Plusx()
{

int a,b,c;
cout<<"введите 2 числа: "<<endl;
cin>>a;
cin>>b;
c=Plus(a,b);
cout<<c;
return 0;
}


int Minusx()
{
int a,b,c;
cout<<"введите 2 числа: "<<endl;
cin>>a;
cin>>b;
c=Minus(a,b);
cout<<c;
return 0;
}

int Umnojx()
{

int a,b,c;
cout<<"введите 2 числа:"<<endl;
cin>>a;
cin>>b;
c=Umnoj(a,b);
cout<<c;
return 0;
}

int Deleniex()
{

float a,b,c;
cout<<"введите 2 числа с точкой : "<<endl;
cin>>a;
cin>>b;
c=Delenie(a,b);
cout<<c;
return 0;
}

int main()
{
cout<<"калькулятор.\n";
cout<<"какое действие вы хотели произвести?\n";
cout<<"1. сложение \n";
cout<<"2. вычитание \n";
cout<<"3. умножение \n";
cout<<"4. деление \n";

int choice;
cin >> choice;
clrscr();
switch(choice)
{
case 1:
Plusx();
break;
case 2:
Minusx();
break;
case 3:
Umnojx();
break;
case 4:
Deleniex();
break;
default:
break;
}
getch();
return 0;
}
0
DobroAlex
20.08.2017, 23:49     Простой консольный калькулятор
  #13

Не по теме:

Кликните здесь для просмотра всего текста
unique594,
C++ за 21 день
Как и "Матан за две недели ", "дискретная математика за неделю ", "Ассемблер за 5 часов " -- в топку localhost'а

0
20.08.2017, 23:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2017, 23:49
Привет! Вот еще темы с ответами:

Консольный калькулятор требует описание
Приветствую! Я написал простенький консольный калькулятор на C++ и хотел бы...

Нужен простой таймер-будильник(консольный)
Играю в БДО(не реклама), и вот понадобился простой таймер, который бы оповещал...

Написать консольный калькулятор (разрядность чисел - 12)
подскажите, пожалуйста, как написать калькулятор (разрядность чисел - 12) на Си...


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

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

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