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

Вычислить выражение записанное в стрке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите с рядами. http://www.cyberforum.ru/cpp-beginners/thread408860.html
Для функции ctg x выполнить следующие действия: Найти разложение функции в степенной ряд в диапазоне возможных значений аргумента : 0 < | x| < 1 . 2. Составить формулу общего члена ряда. ...
C++ Вопрос по функциям класса class vector { private: double x; double y; double z; public: vector(); vector(double a, double b, double c); vector(const vector &a); http://www.cyberforum.ru/cpp-beginners/thread408853.html
C++ Количество локальных минимумов в списке
Всем привет, в списке нужно подсчитать кол-во локальных минимумов и вывести их. Подсчитать подсчитал, но вывести не знаю как. Помогите пожалуйта. Вот фрагмент программы:cout << "\nСодержимое...
C++ Создать абстрактный базовый класс Body
Создать абстрактный базовый класс Body (тело) с виртуальными функциями вычисления площади поверхности и объема. Создать производные классы: Parallelepiped (параллелепипед) и Ball (шар) со своими...
C++ Создать класс Hex для работы с беззнаковыми целыми шестнадцатеричными числами http://www.cyberforum.ru/cpp-beginners/thread408829.html
Создать класс Hex для работы с беззнаковыми целыми шестнадцатеричными числами, используя для представления числа массив из 100 элементов типа unsigned char, каждый из которых является ...
C++ Рассортировать на четные и нечетные числа исходных векторов Пожалуйста помогите исправить ошибки, возможно большинство из них глупые, тк я только начинаю изучать С++. (Среда разработки Visual C++ 2005) Разработать класс содержащий: - компоненты данные -... подробнее

Показать сообщение отдельно
Миша Колесников
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 35
18.12.2011, 10:02  [ТС]
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
#include <stdio.h>
#include <string.h>
#include <windows.h>
 
int main(void)
{
        float stack[70];
        float res;
        int m = 0;
        char query[100];
 
        printf("Введите выражение: ");
        gets(query);
 
        for (int i = 0; i < strlen(query); i++)
        {
                if (query[i] >= '0' && query[i] <= '9')
                {
                        stack[m] = query[i] - '0';
                        m++;
                        continue;
                }
 
                switch (query[i])
                {
                        case '+':
                        {
                                res = stack[m - 2] + stack[m - 1];
                                break;
                        } 
                        case '-':
                        {
                                res = stack[m - 2] - stack[m - 1];
                                break;
                        }
                        case '*':
                        {
                                res = stack[m - 2] * stack[m - 1];
                                break;
                        }
                        case '/':
                        {
                                res = stack[m - 2] / stack[m - 1];
                                break;
                        }
                }
 
                stack[m - 2] = res;
                m--;
        }
 
        printf("Ответ: %f", res);
        system("pause");
 
        return 0;
}
Вы про этот код?
А все понял... там просто с использованием ООП код. Хочу попробовать без него сделать

Добавлено через 15 часов 17 минут
Составил следующий код перевода из инфиксной в постфиксную, но он почему то не делает то, что нужно. в чем ошибка?
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
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
    int j=0, k=0, prior[70];
    char stack[70];
    char st[255], outst[255];
            
    printf("Введите выражение: ");
    gets(st);
    for (int i = 0; i < strlen(st); i++)
    {
        if (st[i] >= '0' && st[i] <= '9')
        {
            outst[j] = st[i] - '0';
            j++;
            continue;
        }
        k++;
        switch (st[i])
        {
            case '+':
            {
                prior[k]=0;
                break;
            } 
            case '-':
            {
                prior[k]=0;
                break;
            } 
            case '/':
            {
                prior[k]=1;
                break;
            } 
            case '*':
            {
                prior[k]=1;
                break;
            } 
  
        }
        if (prior[k]>=prior[k-1])
        {
            stack[k]=st[i];
        }
        else 
        {
            for (int m=sizeof(stack); m<0; m--)
            {
                outst[j] = stack[m];
                stack[m]=0;
                j++;
            }
            stack[0]=st[i];
        }
    }
    printf("Ответ: %f", outst);
    system("pause");
 
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru