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

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

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

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

02.04.2012, 10:08. Просмотров 707. Ответов 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;
 
 
 
             }
}
 
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2012, 10:08     Вопрос новичка - пишу калькулятор
Посмотрите здесь:
Вопрос новичка C++
ВОПРОС НОВИЧКА C++
C++ вопрос новичка по Visual C++
Вопрос новичка про виртуальный деструктор C++
Пишу игру "змейка". Есть вопрос по ней C++
C++ вопросы новичка
C++ Вопросы от новичка.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15686 / 10013 / 1504
Регистрация: 24.12.2010
Сообщений: 18,816
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 - меня перебрасывало в самое начало программы.
Трудно смотреть такой "размазанный" код. Сделай его покомпактнее, убери пустые строчки, а то приходится листать листинг (прости за каламбур)
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;
                }
             }
                         }
Байт
Эксперт C
15686 / 10013 / 1504
Регистрация: 24.12.2010
Сообщений: 18,816
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, заменив их одной строчкой многоточий.
Желательно оформлять проблемный код так, чтобы не появлялись скролы, но и чтоб проблема была видна.
Удачи!
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") или как правильно, поиск пока не очень дал результат?
Байт
Эксперт C
15686 / 10013 / 1504
Регистрация: 24.12.2010
Сообщений: 18,816
02.04.2012, 11:04     Вопрос новичка - пишу калькулятор #6
Цитата Сообщение от sanchoflat Посмотреть сообщение
чтобы программа не просто завершалась, а сразу закрывалась полностью?
C
1
 exit(0);
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) игнорирует
Байт
Эксперт C
15686 / 10013 / 1504
Регистрация: 24.12.2010
Сообщений: 18,816
02.04.2012, 11:17     Вопрос новичка - пишу калькулятор #8
Цитата Сообщение от sanchoflat Посмотреть сообщение
строчку exit(0) игнорирует
Очень странно... Ну, поставь return
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:22  [ТС]     Вопрос новичка - пишу калькулятор #9
хм, судя по интернету - должно выходить, но и при return 0 и при exit(0) изменений не увидел , может это быть из-за среды? пользуюсь code block, потому как заметил, что он бывает прощает некоторые ошибки.
Байт
Эксперт C
15686 / 10013 / 1504
Регистрация: 24.12.2010
Сообщений: 18,816
02.04.2012, 11:24     Вопрос новичка - пишу калькулятор #10
sanchoflat, перед switch напечатай d. Мб он не то значение принимает
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:30  [ТС]     Вопрос новичка - пишу калькулятор #11
Цитата Сообщение от Байт Посмотреть сообщение
перед switch напечатай d.
Не очень понял как это выглядит, просто поставить d перед switch если.
Я попробовал поставить exit(0) в других местах программы, где нету никакого ветвления - просто нажимаем 1 - должен произойти выход, однако он просто выдает в конце время выполнения программы и "нажмите кнопку, чтобы продолжить"
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
02.04.2012, 11:35     Вопрос новичка - пишу калькулятор #12
если я правильно понял то
cout << d;

Добавлено через 45 секунд
ану покаж тот исходник что не работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2012, 11:48     Вопрос новичка - пишу калькулятор
Еще ссылки по теме:
C++ Вопросы от новичка по C++
Компилятор для новичка C++
C++ Два вопроса от новичка
C++ Частый путь новичка
Олимпиадка для новичка на С++ C++

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

Или воспользуйтесь поиском по форуму:
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
02.04.2012, 11:48  [ТС]     Вопрос новичка - пишу калькулятор #13
ура спасибо. Оказалось так, что в самой среде он не закрывает. После того как сохранил и открыл уже как .exe файл - работает как миленький.
Yandex
Объявления
02.04.2012, 11:48     Вопрос новичка - пишу калькулятор
Ответ Создать тему
Опции темы

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