Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? https://www.cyberforum.ru/ cpp-beginners/ thread1567405.html
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из тем сайта. Подскажите, как добавить по пунктам и что сделать, чтобы открывалась библиотека #include"msoftcon.h", а то пишет, что "не удаётся открыть источник файл". Я просто перетащил мышкой файлы в обозреватель решений, но ошибка остаётся той же. ...
C++ Методы класса Сотрудник. Как указать дату?
Добрый день, начинаю осваивать ООП, очень нужны ваши комменты. Создаю класс Сотрудник, нужно ввести 3 конструктора конструктор с тремя параметрами конструктор по умолчанию (без параметров), конструктор с двумя параметрами – имя и зарплата, в этом случае день приема на работу – дата создания объекта Проблема с созданием третьего конструктора, как указать дату? Вопрос второй: нужно указать...
C++ Найти число, которое чаще всего встречается в матрице как найти число которое больше всего встречается в матрице? https://www.cyberforum.ru/ cpp-beginners/ thread1567380.html C++ Создание собственной библиотеки https://www.cyberforum.ru/ cpp-beginners/ thread1567377.html
В заданном массиве размером N, образуется из случайных чисел, нужно: Сформировать новый массив B того же размера по следующему правилу: элемент Bk равен среднему арифметическому элементов массива A с номерами от 1 до K.
C++ Вывести каждое второе слово заданного текста большими буквами
Буду очень благодарен))) Дан текст,вводиться с клавиатуры,нужно вывести каждое второе слово большими буквами
C++ Пузырьковая сортировка двумерных массивов Недавно начал изучать С++ по книге Герберта Шилдта. Заступорился на сортировке двумерных массивов, поясните пожалуйста как это работает. Особенно вот эта строчка num=(t*4)+i+1; #include <iostream> using namespace std; int main() https://www.cyberforum.ru/ cpp-beginners/ thread1567352.html
C++ Рекурсия: найти наибольший общий делитель 2-х натуральных чисел С помощью рекурсивной функции найти наибольший общий делитель 2-х натуральных чисел. #include <iostream> #include <conio.h> #include <math.h> int sum, n, max; int main() { std::cin>>n; if (n==1) result 1; https://www.cyberforum.ru/ cpp-beginners/ thread1567350.html C++ Класс Person. Сохранения и управления собственными объектами в карте с++
Здравствуйте. Нужно добавить к классу Person к имении и фамилии ещё и возраст. Вот мои наработки: #include <iostream> #include <cstdio> #include <iomanip> #include <iomanip> #include <map> #include "File1.h" using namespace std;
C++ Указатель на функцию с аргументами, как аргумент другой функции https://www.cyberforum.ru/ cpp-beginners/ thread1567323.html
У меня есть некая функция, которая принимает как аргумент другую функцию typedef void(*func_type)(); start(func_type ExecFunction); И все работает нормально, пока мне не понадобились аргументы в функции: я сделал так
C++ Распознавание базы у числа в стандартном потоке https://www.cyberforum.ru/ cpp-beginners/ thread1567293.html
Всем доброго! Задача: вводится набор чисел с различным основание (dec, hex, oct). Нужно их преобразовать в числа с десятичным основанием. Я так понимаю, пока потоку не скажешь, что у него на входе число с определенным основанием, он будет воспринимать его по умолчанию (или последнему вводу). Я пока вижу решение в запихивании очередного числа в строку, разбирательством с основанием, а...
Преобразовать void в int C++
void Matrix::operator --() //перегруженный оператор -- { int tmp=mtx; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(tmp>mtx) //ищем минимальный элемент tmp=mtx; } }
C++ Удалить в текстовом файле символ распределитель в конце строк https://www.cyberforum.ru/ cpp-beginners/ thread1567287.html
Нужно создать програму, что будет удалять в текстовом файле символ распределитель(пробел, символ табуляции) в конце строк. Нужно исползовать функции fstream.
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
05.11.2015, 00:19 0

Калькулятор с парсингом строки - C++ - Ответ 8293677

05.11.2015, 00:19. Показов 14627. Ответов 12
Метки (Все метки)

Ответ

Restartuk,
Это код мосье Страуструпа по вашей теме, рекомендовано к изучению )
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <map>
#include <sstream>
#include <cctype>
enum Token_value {
    NAME, NUMBER, END,
    PLUS = '+', MINUS='-', MUL='*', DIV='/',
    PRINT=';', ASSIGN='=', LP='(', RP=')'
};
Token_value curr_tok=PRINT;
std::map<std::string,double> table;
double number_value;
std::string string_value;
int no_of_errors;
double error(const std::string& s){ 
    no_of_errors++;
    std::cerr << "error: " << s << std::endl;
    return 1;
}
Token_value get_token()
{
    char ch = 0;
    do {
        if (!std::cin.get(ch)) return curr_tok = END;
    } while (ch!='\n'&&isspace(ch));
 
    switch (ch) {
        case 0:
             return curr_tok = END;
        case ';':case '\n':
             return curr_tok = PRINT;
        case '*':case'/':case '+':case '-':case '(':case ')':case '=':
             return curr_tok=Token_value(ch);
        case '0':case '1':case '2':case '3':case '4' :
        case '5':case '6':case '7':case '8':case '9':case '.':
             std::cin.putback(ch);
             std::cin>>number_value;
             return curr_tok=NUMBER;
        default:
             if (isalpha(ch)) {
                 string_value = ch;
                 while (std::cin.get(ch)&&isalnum(ch)) string_value.push_back(ch);
                 std::cin.putback(ch);
                 return curr_tok = NAME;
             }
             error ("bad token");
             return curr_tok = PRINT;
    }
}
double expr(bool get);
double prim(bool get){
    if (get) get_token();
    switch (curr_tok){
    case NUMBER:{
        double v=number_value;
        get_token();
        return v;
    }
    case NAME:{
        double& v = table[string_value];
        if (get_token()==ASSIGN) v=expr(true);
        return v;
    }
    case MINUS:return -prim(true);
    case LP:{
        double e=expr(true);
        if (curr_tok!=RP) return error("')'expected");
        get_token();
        return e;
    }
    default:
        return error("primary expected");
    }
}
double term(bool get){
    double left=prim(get);
    for (;;)
        switch (curr_tok){
         case MUL:
             left*=prim(true);
             break;
         case DIV:
             if (double d=prim(true)){
                 left /= d;
                 break;
             }
             return error("divide by 0");
 
         default:return left;
        }
}
double expr(bool get){
    double left=term(get);
    for (;;)
        switch(curr_tok){
        case PLUS:
            left+=term(true);
            break;
        case MINUS:
            left-=term(true);
            break;
        default:
            return left;
        }
}
int main() {
    table["pi"]=3.141592653589793;
    table["e"]=2.7182818284590452;
    while (std::cin){
        get_token();
        if (curr_tok==END) break;
        if (curr_tok==PRINT) continue;
        std::cout << expr(false) << std::endl;
    }
    return no_of_errors;
}


Вернуться к обсуждению:
Калькулятор с парсингом строки C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2015, 00:19
Готовые ответы и решения:

Простой калькулятор и калькулятор с парсингом
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который...

Калькулятор с парсингом ввода
Всем привет, не так давно начал постигать c++. Возник вопрос как сделать программу-калькулятор, в...

Калькулятор с парсингом арифметических выражений
Народ интересует вопрос возможно ли сделать калькулятор в console приложении на C++ так что бы я...

Корень и дробная часть. Калькулятор с парсингом
Прошу вас помочь мне. Ибо все мои пробы не к чему не приводят. Я пишу консольный калькулятор. ...

12
05.11.2015, 00:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2015, 00:19
Помогаю со студенческими работами здесь

Помогите с парсингом С++!!!
Народ помогите с парсингом я в этом деле жесткий нуб скиньте ссылки на книжки какие-нибудь где есть...

Строки. Програмный калькулятор
Реализовать програмный калькулятор, запрашивающий у пользователя в виде строки символов выражение,...

Калькулятор для командной строки
Помогите пожалуйста написать калькулятор для командной строки...

Нужна программа калькулятор: вычисление значения, заданного в виде строки
Нужен калькулятор, которые не будет просить ввести отдельно числа, а будет считывать всю строку и...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru