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

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

Войти
Регистрация
Восстановить пароль
 
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
#1

Вопрос новичка - пишу калькулятор - C++

02.04.2012, 10:08. Просмотров 723. Ответов 12
Метки нет (Все метки)

Всем привет! Изучаю с++ пока второй день (вернее третий час)), наверно как и многие, пишу калькулятор. Однако написав простые действия, начал делать всякие ветвления, если нажать это - перейти сюда, вот возник вопрос: Программа работает как надо, но в конце, когда я хочу, чтобы при выборе yes / no программа выходила, либо возвращалась на начальный этап. Как сделать, чтобы после нажатия на No - меня перебрасывало в самое начало программы. ( помню в паскале было такое, тут пока не нашел)

И возможно ли в switch() case 1: вместо числа ставить строчку? ( посмотрел синтаксис - только цифру увидел.

Спасибо

(почему кстати тело программы выделилось красным?)
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
#include <iostream>
#include <math.h>
 
 
using namespace std;
 
 main()
 {
 
             int c,d;
             double a,b;
 
do{
 
              cout<<"vvedite A: ";
              cin>>a;
 
              cout<<"vvedite B: ";
              cin>>b;
 
              c=a+b;
              cout<<"viberi operaciu"<<endl;
 
              cout<<"1. +"<<endl;
              cout<<"2. -"<<endl;
              cout<<"3. *"<<endl;
              cout<<"4. /"<<endl;
              cout<<"5. chislo a v stepeni b"<<endl;
              cout<<"6. pereiti na novuiu stranicy"<<endl;
              cout<<"7.  EXIT"<<endl;
 
              cout<<"operacia: ";
              cin>>c;
 
              switch (c)
              {
 
             case 1  :
             cout<<"resultat: "<<a<<" + "<<b<<" = "<<a+b<<endl;
              break;
 
              case 2  :
             cout<<"resultat: "<<a<<" - "<<b<<" = "<<a-b<<endl;
              break;
 
              case 3  :
             cout<<"resultat: "<<a<<" * "<<b<<" = "<<a*b<<endl;
              break;
 
              case 4  :
             cout<<"resultat: "<<a<<" / "<<b<<" = "<<a/b<<endl;
              break;
 
              case 5  :
             cout<<"resultat: "<<a<<" v stepeni "<<b<<" = "<<pow(a,b)<<endl;
              break;
 
              case 7  :
             cout<<endl;
              break;
 
              case 6  :
 
             cout<<"8. a*sin(b)"<<endl;
             cout<<"9. a*cos(b)"<<endl;
             cout<<"10. EXIT"<<endl;
             cout<<"vvedite operaciu: ";
             cin>>c;
 
             switch(c) {
             case 8 :
             cout<<"resultat: "<<a<<"sin("<<b<<")"<<" = "<<a*sin(b)<<endl;
 
              break;
 
              case 9 :
             cout<<"resultat: "<<a<<"cos("<<b<<")"<<" = "<<a*cos(b)<<endl;
              break;
             }
 
              break;
 
              }
 
} while( c!=10, c!=7);
if (c=10, c=7)
{
             cout<<"vi yvereni?"<<"   (1.Yes / 2.No)"<<endl;
             cin>>d;
             switch(d)
             {
                          case 1:
 
                          break;
 
 
 
             }
}
 
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2012, 10:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос новичка - пишу калькулятор (C++):

ВОПРОС НОВИЧКА - C++
Просьба скорректировать мой мозг... Visual c++ и просто с++ это же разные языки? и если да, то как в visual studio мне программировать на...

Вопрос новичка - C++
Вот есть у меня исходики программы. как мне текст преобразовать в формы, т.е. без компилирования уже в прогамму. у меня borland c++ angl

вопрос новичка по Visual C++ - C++
пишу в данный раздел а не в Visual C++, поскольку только начал его изучение, и потому наверняка задача решается просто. Суть проблемы:...

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

Пишу игру "змейка". Есть вопрос по ней - C++
Я сейчас пишу игру &quot;змейка&quot;. (в консоли), но возникла одна проблема. Направление движения от пользователя я принимаю так: раз в секунду...

Простой калькулятор и калькулятор с парсингом - C++
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который работает с 2 числами. Возник вопрос, как...

12
Байт
Эксперт C
16324 / 10600 / 1587
Регистрация: 24.12.2010
Сообщений: 20,207
02.04.2012, 10:31 #2
Цитата Сообщение от sanchoflat Посмотреть сообщение
И возможно ли в switch() case 1: вместо числа ставить строчку? ( посмотрел синтаксис - только цифру увидел.
Нет! Только целое число. Можно символ - он приводится к int

Цитата Сообщение от sanchoflat Посмотреть сообщение
while( c!=10, c!=7);
Плохо. Результат этого условия (c!=7)
Надо
C
1
while( c!=10 && c!=7);
Цитата Сообщение от sanchoflat Посмотреть сообщение
чтобы при выборе yes / no программа выходила, либо возвращалась на начальный этап. Как сделать, чтобы после нажатия на No - меня перебрасывало в самое начало программы.
Трудно смотреть такой "размазанный" код. Сделай его покомпактнее, убери пустые строчки, а то приходится листать листинг (прости за каламбур)
0
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 10:34  [ТС] #3
убрал пробелы между строкамт ( хотя с ними удобнее вплане того, что понятно где заканчивается одна операция, начинается другая)
C++ (Qt)
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
#include <iostream>
#include <math.h>
using namespace std;
 main()
 {
             int c,d;
             double a,b;
            do{
              cout<<"vvedite A: ";
              cin>>a;
              cout<<"vvedite B: ";
              cin>>b;
              c=a+b;
              cout<<"viberi operaciu"<<endl;
              cout<<"1. +"<<endl;
              cout<<"2. -"<<endl;
              cout<<"3. *"<<endl;
              cout<<"4. /"<<endl;
              cout<<"5. chislo a v stepeni b"<<endl;
              cout<<"6. pereiti na novuiu stranicy"<<endl;
              cout<<"7.  EXIT"<<endl;
              cout<<"operacia: ";
              cin>>c;
              switch (c)
              {
             case 1  :
             cout<<"resultat: "<<a<<" + "<<b<<" = "<<a+b<<endl;
              break;
              case 2  :
             cout<<"resultat: "<<a<<" - "<<b<<" = "<<a-b<<endl;
              break;
              case 3  :
             cout<<"resultat: "<<a<<" * "<<b<<" = "<<a*b<<endl;
              break;
              case 4  :
             cout<<"resultat: "<<a<<" / "<<b<<" = "<<a/b<<endl;
              break;
              case 5  :
             cout<<"resultat: "<<a<<" v stepeni "<<b<<" = "<<pow(a,b)<<endl;
              break;
              case 7  :
             cout<<endl;
              break;
              case 6  :
             cout<<"8. a*sin(b)"<<endl;
             cout<<"9. a*cos(b)"<<endl;
             cout<<"10. EXIT"<<endl;
             cout<<"vvedite operaciu: ";
             cin>>c;
             switch(c) {
             case 8 :
             cout<<"resultat: "<<a<<"sin("<<b<<")"<<" = "<<a*sin(b)<<endl;
              break;
              case 9 :
             cout<<"resultat: "<<a<<"cos("<<b<<")"<<" = "<<a*cos(b)<<endl;
              break;
             case 10  :
             cout<<endl;
              break;
                            }
              break;
              }
              
              }while( c!=10 &&  c!=7);
              if (c=10, c=7)
             {
             cout<<"vi yvereni?"<<"   (1.Yes / 2.No)"<<endl;
             cin>>d;
             switch(d=1)
                {
                          case 1:
                          break;
                }
             }
                         }
0
Байт
Эксперт C
16324 / 10600 / 1587
Регистрация: 24.12.2010
Сообщений: 20,207
02.04.2012, 10:51 #4
Цитата Сообщение от sanchoflat Посмотреть сообщение
switch(d=1)
Чушь!
C
1
2
3
4
 switch (d) {
 case 1: break;
 case 2: goto Lab;
}
Перед первым do в строчке 8 поставь метку
C
1
 Lab: do {
Это не очень "структурно", но пока так. В качестве упражнения тебе - как обойтись без goto

Цитата Сообщение от sanchoflat Посмотреть сообщение
убрал пробелы между строкамт ( хотя с ними удобнее вплане того, что понятно где заканчивается одна операция, начинается другая)
Согласен, тебе удобнее. А мне - нет. В качестве эксперимента - пройдись по форуму для начинающих, там полно длинных листингов, и попробуй не переписывая кода к себе на комп, попытаться понять о чем там речь идет.
Кроме того, при вопросах подобных твоему можно не предъявлять 20 строк похожих case, заменив их одной строчкой многоточий.
Желательно оформлять проблемный код так, чтобы не появлялись скролы, но и чтоб проблема была видна.
Удачи!
1
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:01  [ТС] #5
ок спасибо, кстати там где
C++ (Qt)
1
switch (d=1)
- да накосячил, сначала так написал, потом сравнил с синтаксисом - и исправил, в первом варианте ошибки нету там, просто неправильный копипаст)

Хорошо, код буду как можно компактнее сжимать

Добавлено через 6 минут
Отлично, разобрался с goto - все работает.

А если я нажимаю exit/yes - чтобы программа не просто завершалась, а сразу закрывалась полностью?

видел гдето, что используют что-то типа ("CLOSE") или как правильно, поиск пока не очень дал результат?
0
Байт
Эксперт C
16324 / 10600 / 1587
Регистрация: 24.12.2010
Сообщений: 20,207
02.04.2012, 11:04 #6
Цитата Сообщение от sanchoflat Посмотреть сообщение
чтобы программа не просто завершалась, а сразу закрывалась полностью?
C
1
 exit(0);
1
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:14  [ТС] #7
мм, вроде логически правильно все, если
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
switch(d)
                {
                          case 1:
                          exit(0);
                          break;
 
                          case 2:
                          goto i;
                          break;
                }
но опять же не работает, может нужно подключить библиотеку?
Посмотрел в интернете примеры, однако ни одна из библиотек не подошла. строчку exit(0) игнорирует
0
Байт
Эксперт C
16324 / 10600 / 1587
Регистрация: 24.12.2010
Сообщений: 20,207
02.04.2012, 11:17 #8
Цитата Сообщение от sanchoflat Посмотреть сообщение
строчку exit(0) игнорирует
Очень странно... Ну, поставь return
0
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:22  [ТС] #9
хм, судя по интернету - должно выходить, но и при return 0 и при exit(0) изменений не увидел , может это быть из-за среды? пользуюсь code block, потому как заметил, что он бывает прощает некоторые ошибки.
0
Байт
Эксперт C
16324 / 10600 / 1587
Регистрация: 24.12.2010
Сообщений: 20,207
02.04.2012, 11:24 #10
sanchoflat, перед switch напечатай d. Мб он не то значение принимает
0
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:30  [ТС] #11
Цитата Сообщение от Байт Посмотреть сообщение
перед switch напечатай d.
Не очень понял как это выглядит, просто поставить d перед switch если.
Я попробовал поставить exit(0) в других местах программы, где нету никакого ветвления - просто нажимаем 1 - должен произойти выход, однако он просто выдает в конце время выполнения программы и "нажмите кнопку, чтобы продолжить"
0
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
02.04.2012, 11:35 #12
если я правильно понял то
cout << d;

Добавлено через 45 секунд
ану покаж тот исходник что не работает
0
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:48  [ТС] #13
ура спасибо. Оказалось так, что в самой среде он не закрывает. После того как сохранил и открыл уже как .exe файл - работает как миленький.
0
02.04.2012, 11:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2012, 11:48
Привет! Вот еще темы с ответами:

Вопросы от новичка по C++ - C++
1)В С++ можно делить с остатком только вещественные числа? К примеру: int a,b; float c; Если 5 поделить на 4 ,то получим 1 без...

вопросы новичка - C++
)Значение литерала 7.0Е-3 2)Логическая ошибка (ошибка реализации алгоритма) Выберите по крайней мере один ответ: пропуск ; ...

Вопросы от новичка. - C++
Всем доброго времени суток, уважаемые форумчане. Мне 12 лет. Собираюсь серьезно изучать C++. Пока работала в средах LogoWriter (понятие...

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


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

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

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