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

Обратная польская запись - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составьте программу, обнуляющую главную диагональ матрицы, если в ней найдется хотя бы один отрицательный элемент http://www.cyberforum.ru/cpp-beginners/thread893172.html
Дан двумерный массив А(M, M) в виде квадратной матрицы. Составьте про-грамму, обнуляющую главную диагональ матрицы, если в ней найдется хотя бы один отрицательный элемент. Из элементов побочной диагонали сформируйте одномерный массив и отсортируйте его по возрастанию методом Шелла. Выве-дите на экран исходную и преобразованную матрицы и отсортированный массив. Способ сортировки должен быть...
C++ Ошибка: "Source file not compiled" Здравствуйте, начал обучаться с++ по книге "с++ для чайников". написал первую программу, сделал все точно, как написано, а она не запускается. какое решение? http://www.cyberforum.ru/cpp-beginners/thread893167.html
Описать классы C++
Ребят, нужна помощь к завтрашнему дню.. 1) Составить описание класса для представления даты. Предусмотреть методы получения даты следующего дня, увеличения даты на n дней, определения високосности года, получения отдельных частей даты (год, месяц, день), сравнения дат. 2) Описать класс "многоугольник" с полем - массив объектов класса "вершина". Предусмотреть возможность работы с...
C++ Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах
Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах Вид файла студент: структура записи: ФИО (40 знаков) номер курса (1 знак) номер группы (1 знак) успеваемость - 5 экзаменов в каждой из 10 сессий форма обучения (целевая, договорная) (1 знак)
C++ Создайте структуру Прямая http://www.cyberforum.ru/cpp-beginners/thread893155.html
Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая. Для К заданных прямых вывести уравнение прямых в виде y=ax+b. в С++ пожалуйста)) VikaCergeevna, обратите внимание на правила форума: заголовок должен отражать суть задания. "7" - не комильфо (
C++ Структуры Ресторана как писать меню рестора через struct????Типа отак....... Структуры Ресторана* 1) Сотрудники (Код сотрудника, ФИО, Возраст, Пол, Адрес, Телефон, Паспортные данные, Код должности) .2) Должности (Код должности, наименование должности, оклад, Обязанности, Требования) .3) Состав (Код ингредиента Наименование ингредиента Дата выпуска, Объем, Срок годности Стоимость Снабженец) .Структуры Ресторан.4)... подробнее

Показать сообщение отдельно
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
06.06.2013, 15:24     Обратная польская запись
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
class RPNSolver
{
public:
    RPNSolver(){}
 
    int solve( const string& expr )
    {
        stack< int > stk; // values stack
        int pos = 0; // first symbol's position of current expression (they are divided by whitespace)
        string curVal;
        int sz = expr.size();
        while( pos != sz )
        {
            curVal = this->getNextValue( expr, pos );
            if( isNum(curVal) )
                stk.push( ::atoi(curVal.c_str()) );
            else
                stk.push( this->calculate(stk, curVal) );
        }
 
        return stk.top();
    }
 
    string getNextValue( const string& expr, int& pos )
    {
        int posStart = pos;
        int sz = expr.size();
        while( (expr[ pos++ ] != ' ') && (pos != expr.size())  )
        {}
 
        int count = (pos != sz) ? pos - posStart - 1 : pos - posStart;
        return expr.substr( posStart, count );
    }
 
    bool isNum( const string& value )
    {
        return value[0] >= 48 && value[0] <= 57 ; // ascii(48) = '0', ascii(57) = '0'
    }
 
    int calculate( stack< int >& stk, const string& oper )
    {
        int res = stk.top();
        stk.pop();
 
        while( !stk.empty() )
        {
            if( oper[0] == '+' )
                res += stk.top();
            else if( oper[0] == '-' )
                res -= stk.top();
            else if( oper[0] == '*' )
                res *= stk.top();
            else
                return 0;
 
            stk.pop();
        }
 
        return res;
    }
};
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru