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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 228, средняя оценка - 4.74
Boshop
13 / 13 / 0
Регистрация: 25.09.2012
Сообщений: 122
#1

C++ Калькулятор - C++

25.09.2012, 17:54. Просмотров 32951. Ответов 7
Метки нет (Все метки)

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

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
#include <iostream>
using namespace std;
int main()
{
    char s[100];
    cout << "Vvedite primer: \n";
    cin >> s;
    int per,two,obch;
    char h[20];
    char k[20];
    char j;
    char o;
    int f=0;
    int l=0;
    bool ten=false;
    bool six=false;
    bool joke=false;
    bool one=false;
    bool i =false;
    if(i==false)
    for(int i=0;i<=100;i++)
    {
        if(ten==false)
        {
        if(isdigit(s[i]))
        {
            h[f]=s[i];
            f+=1;
        }
        else
        {
            j=s[i];
            ten=true;
            six=true;
        }
        }
        if(six==true)
        {
            if(isdigit(s[i]))
            {
                k[l]=s[i];
                l+=1;
            }
            else 
            {
                o=s[i];
                six=false;
                joke=true;
            }
        }
        if(joke==true)
        {
            if(one=false)
            {
            per=atoi(h);
            }
            two=atoi(k);
            switch(j)
            {
            case '+': if(one ==false) obch=per+two;else obch+=two;break;
            case '-': if(one ==false) obch=per-two;else obch-=two;
            case '*': if(one ==false) obch=per*two;else obch*=two;
            case '/': if(one ==false) obch=per/two;else obch/=two;
            case '=': cout << obch;i=true;break;
            }
            one=true;
        }
        cout << obch;
    }
    cin.get();
    cin.get();
    cin.get();
}
Писать что это быдло-код ненадо сам знаю. Просто скажите в чем проблеммы моего кода. Знаю критики будет очень много и я к ней готов.
http://dump.ru/file/5861282

Добавлено через 33 минуты
Если непонятно для чего нужны какие-то переменные,объясню
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 17:54     C++ Калькулятор
Посмотрите здесь:

Калькулятор - C++
Помогите пожалуйста сделать в этом калькуляторе скобки. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include...

Калькулятор - C++
Пишу калькулятор. Прошу помощи. Вот мой код #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;string.h&gt; #include &lt;cmath&gt; using...

Калькулятор на С++ - C++
Сделал калькулятор, работает нормально, но программа считает только два числа за раз: &gt;&gt;Картинка&lt;&lt; , как сделать так чтоб пользователь...

Калькулятор - C++
Вот сам калькулятор: #include&lt;conio.h&gt; #include&lt;locale.h&gt; #include&lt;stdio.h&gt; #define END '0' #define ERROR -1 #include&lt;stdlib.h&gt;...

Калькулятор - C++
Написал примитивный калькулятор: #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;conio.h&gt; using namespace std; int...

Калькулятор - C++
Есть такое условие: If(b=='+') s=a+b; как сделать так чтобы я мог додавать не два числа а a+b+...+n

Калькулятор - C++
Всем привет) Начну с того что я не программист... Но вот решил просто освоить для себя. Выбрал язык Си. Купил книгу начал читать....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 17:58     C++ Калькулятор #2
В каком виде туда примеры вводить?
Может дело и не в этом, но допишите system("pause"); перед ретурном
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 292
25.09.2012, 18:41     C++ Калькулятор #3
А где у него ретурн вообще?)
Boshop
13 / 13 / 0
Регистрация: 25.09.2012
Сообщений: 122
25.09.2012, 19:22  [ТС]     C++ Калькулятор #4
Можно вписывать только целые числа и чтобы в ответе получались только целые числа

Добавлено через 1 минуту
Сделал как порекомендовали но ничего не изменилось но теперь стало раз 30 выводить такую вот комбинацию "-858993460-"

Добавлено через 3 минуты
При умножении, делении,ычитание выдаёт такую ошибку "Integer division by zero"

Добавлено через 14 секунд
При умножении, делении,ычитание выдаёт такую ошибку "Integer division by zero"
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
25.09.2012, 19:32     C++ Калькулятор #5
Вот набросок калькулятора, который просто считает 2+2 (вводим 2+2, получаем 4 ). В твоём коде я не понял логики, попытался исправить код, но в итоге от твоего кода ничего не осталось (почти).
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
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
 
int main()
{
    char s[100];
    cout << "Vvedite primer: \n";
    cin >> s;
 
    long result = 0;
    int first_operand, second_operand;
 
    char first_string[20];
    char second_string[20];
 
    memset( first_string,0, 20);
    memset(second_string,0, 20);
 
    char cur_operator = ' ';
 
    char Operator[] = {'+', '-', '*', '/'};
 
    bool error = false;
 
    unsigned i;
 
    for (i = 0; isdigit(s[i]) ; ++i)
    {
       first_string[i]=s[i];
    }
 
    for (unsigned j = 0; j < sizeof(Operator); ++j) {
 
       if (s[i] != Operator[j]) {
          error = true;
       }
       else {
          error = false;
          cur_operator = Operator[j];
          break;
       }
    }
    if (error) {
       cout << "WRONG OPERATOR: " << s[i];
       return -1;
    }
 
    for (unsigned j = 0; isdigit(s[++i]) && i < sizeof(s) ; ++j)
    {
       second_string[j]=s[i];
    }
 
    first_operand  = atoi( first_string);
    second_operand = atoi(second_string);
 
    switch(cur_operator) {
 
       case '+': if(first_operand) result = first_operand + second_operand;
                 else result += second_operand;
       break;
       case '-': if(first_operand) result = first_operand - second_operand;
                 else result -= second_operand;
       break;
       case '*': if(first_operand) result = first_operand * second_operand;
                 else {
                    std::cout << "ERROR: Operand missing";
                    return -1;
                 }
       break;
       case '/': if(first_operand) result = first_operand / second_operand;
                 else {
                    std::cout << "ERROR: Operand missing";
                    return -1;
                 }
       break;
       default:
          std::cout << "ERROR";
          return -1;
    }
    cout << '=' << result;
 
    cin.get();
 
    return 0;
}
А вообще советую почитать исходники от Evg, тогда поймёшь, как идёт разбор выражений (если интересно)
Представление выражения в двоичном дереве Чуть ниже есть пояснения
Boshop
13 / 13 / 0
Регистрация: 25.09.2012
Сообщений: 122
25.09.2012, 21:17  [ТС]     C++ Калькулятор #6
а что это за функция memset?
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
25.09.2012, 23:41     C++ Калькулятор #7
Цитата Сообщение от Boshop Посмотреть сообщение
а что это за функция memset?
Заполняет блок памяти данными ( в данном случае нулями).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2012, 07:26     C++ Калькулятор
Еще ссылки по теме:

Калькулятор - C++
Решил написать калькулятор, а вот и он: #include&lt;conio.h&gt; #include&lt;locale.h&gt; #include&lt;stdio.h&gt; #define END '0' #define ERROR 'a' ...

Калькулятор - C++
Доброго времени суток, Народ! Помогите плиз с задачей. Нужен исходник калькулятора, самого простого, на 4 действия. Заранее спасибо!!!

Калькулятор - C++
Как создать калькулятор? Самый обычный, какой есть в стандартных программах, не инженерный. С дизайном разобралась, а с кодом вообще не...

Калькулятор - C++
Добрый вечер всем! Я решил написать калькулятор, но возникла одна проблема: я хочу написать чтобы он решал вот такие примеры: а + b а +...

Калькулятор - C++
На форуме наткнулся на тему &quot;Римский калькулятор&quot;. Вот код: Functions.cpp #include&lt;iostream&gt; const int arabar = { 1, 4, 5, 9,...


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

Или воспользуйтесь поиском по форуму:
Boshop
13 / 13 / 0
Регистрация: 25.09.2012
Сообщений: 122
26.09.2012, 07:26  [ТС]     C++ Калькулятор #8
Цитата Сообщение от #pragma Посмотреть сообщение
Заполняет блок памяти данными ( в данном случае нулями).
Спасибо.Понял теперь свои ошибки, буду практиковать.
Yandex
Объявления
26.09.2012, 07:26     C++ Калькулятор
Ответ Создать тему
Опции темы

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