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

Функция дужки(приоритет операций) в калькуляторе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверка ошыбок http://www.cyberforum.ru/cpp-beginners/thread704177.html
Есть код програмы но гдето есть ошыбка немогу с виду найти мне сказали запустить дебагер или както так и там будет видно как изменяютса переменные . скажите как запустить на с++.
C++ Найти тройки чисел Найти все такие тройки натуральных чисел x, y, z из интервала от 1 до 20, для которых выполняется равенство: x*y2=z2 Огромное спасибо заранее. http://www.cyberforum.ru/cpp-beginners/thread704157.html
Разобрать GIF файл по пикселям и вывести в матрицу C++
Требуется разобрать GIF файл по пикселям и вывести на матрицу. У кого нибудь есть опыт работы с GIF файлами на уровне программы. Поделитесь инфой или примерами кода если не жалко :) Заранее спасибо
Вычисление следа матрицы (правильно ли написана программа?) C (СИ)
вычислить значения следа матрицы A(SpA) и следа матрицыB(SpB). вычислить значения суммы положительных и суммы отрицательных элементов (SP,SN) матрицы А, если SpA>SpB, или матрицы B-иначе Вывести:B,SpA,SpB,SP,SN #include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #define n 5 int main() {
C++ Дана прямоугольная матрица действительных чисел http://www.cyberforum.ru/cpp-beginners/thread704138.html
Дана прямоугольная матрица действительных чисел. Найти количество строк, среднее арефметическое элементов которых меньше заданной величины.
C++ Дана прямоугольная матрица действительных чисел Дана прямоугольная матрица действительных чисел. Найти количество строк, среднее арефметическое элементов которых меньше заданной величины. подробнее

Показать сообщение отдельно
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
21.11.2012, 13:57  [ТС]     Функция дужки(приоритет операций) в калькуляторе
Теперь выводит токо то что было в скобках. Как сделать чтоб то что поза скобками додавалось(отнималось, делилось...)
к результату в скобках?
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
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h> 
using namespace std;
int calc2(int);
int main ()
{
    float g, res=0, res2=0;
    bool EXIT = false;
    char str[100],op='\0',history[255];
    history[0]='\0';
    while (EXIT == false)
    {
        cout << "Input string: ";
        cin >> str;
        strcat(history,str);
        if (str[0] == '=') EXIT = true;
        
        g = atof(str);
        float G = atof(str);
        if (g==0) op = str[0];
        else
        {  
            if  (op!='\0')
            {
                if (op == '+') res+=g;
                if (op == '-') res-=g;
                if (op == '*') res*=g;
                if (op == '/') res/=g;
                if (op == 's') res=(sin(g));
                if (op == 'c') res=cos(g);
                if (op == 't') res=tan(g);
                if (op == 'l') res=log(g);
                if (op == '^') res=pow(res,g);  
                if (op == '(') 
                {
                    calc2(res2);
                    res=res2;
                }
                op = '\0';
            }
            else res = g;
        }
    }
    cout << history << res; 
    getch();
    return 0;
}
int calc2(int res2)
{
    float g;
    bool EXIT = false;
    char str[100],op='\0';
    while (EXIT == false)
    {
        cout << "Input string: ";
        cin >> str;
        if (str[0] == ')') return res2;
        g = atof(str);
        float G = atof(str);
        if (g==0) op = str[0];
        else
        {  
            if  (op!='\0')
            {
                if (op == '+') res2+=g;
                if (op == '-') res2-=g;
                if (op == '*') res2*=g;
                if (op == '/') res2/=g;
                if (op == 's') res2=(sin(g));
                if (op == 'c') res2=cos(g);
                if (op == 't') res2=tan(g);
                if (op == 'l') res2=log(g);
                if (op == '^') res2=pow(res2,g);
                op = '\0';
            }
        }
    }
}
Добавлено через 2 минуты
margarin, нет, так как в скобках тоже надо вводить действительные числа. "cin >> str;" - Здесь вводиться строка(сначала число, ентер, знак операции, ентер, опять число.... или = и вивод результата)

Добавлено через 4 минуты
Цитата Сообщение от margarin Посмотреть сообщение
спрашиваю, целочисленный тип для res2 подходит?




второй вопрос, что ты тут вводишь?
C++
1
cin >> str;
а, понял, там был флоат, а там инт. исправил. Но всеравно, как сделать правильно скобки не знаю(

Добавлено через 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
#include <iostream>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h> 
using namespace std;
float calc2(float);
int main ()
{
    float g, res=0, res2=0;
    bool EXIT = false;
    char str[100],op='\0',history[255];
    history[0]='\0';
    while (EXIT == false)
    {
        cout << "Input string: ";
        cin >> str;
        strcat(history,str);
        if (str[0] == '=') EXIT = true;
        g = atof(str);
        float G = atof(str);
        if (g==0) op = str[0];
        else
        {  
            if  (op!='\0')
            {
                if (op == '+') res+=g;
                if (op == '-') res-=g;
                if (op == '*') res*=g;
                if (op == '/') res/=g;
                if (op == 's') res=(sin(g));
                if (op == 'c') res=cos(g);
                if (op == 't') res=tan(g);
                if (op == 'l') res=log(g);
                if (op == '^') res=pow(res,g);  
                if (op == '(') 
                {
                    calc2(res2);
                    res=res2;
                }
                op = '\0';
            }
            else res = g;
        }
    }
    cout << history << res; 
    getch();
    return 0;
}
float calc2(float res2)
{
    float g;
    bool EXIT = false;
    char str[100],op='\0';
    while (EXIT == false)
    {
        cout << "Input string: ";
        cin >> str;
        if (str[0] == ')') return res2;
        g = atof(str);
        float G = atof(str);
        if (g==0) op = str[0];
        else
        {  
            if  (op!='\0')
            {
                if (op == '+') res2+=g;
                if (op == '-') res2-=g;
                if (op == '*') res2*=g;
                if (op == '/') res2/=g;
                if (op == 's') res2=(sin(g));
                if (op == 'c') res2=cos(g);
                if (op == 't') res2=tan(g);
                if (op == 'l') res2=log(g);
                if (op == '^') res2=pow(res2,g);
                op = '\0';
            }
        }
    }
}
 
Текущее время: 23:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru