0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
1

Калькулятор для работы с знаками "+" "-" "/" "*" через string без приоритетов

08.12.2018, 14:43. Показов 2880. Ответов 7

Author24 — интернет-сервис помощи студентам
Нужно написать калькулятор для работы с знаками "+" "-" "/" "*" через string. Приоритеты действий не надо. Моя наработка, из нюансов, не правильно работает минус.
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
#include "pch.h"
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    cout << "Enter expression:\n";
    string expr;
    int sum = 0, s1, s2;
    getline(cin, expr);
    s1 = expr.size();
    for (int i = 0; i < 5; i++) {
        if (expr.find('+') == i) {
                sum += stoi(std::string(expr.begin(), expr.begin() + expr.find('+')));
                expr.erase(expr.begin(), expr.begin() + expr.find('+') + 1);
                i = 0;
            }
        else if (expr.find('-') == i) {
            s2 = expr.size();
            if (s1 == s2) {
                sum += stoi(std::string(expr.begin(), expr.begin() + expr.find('-')));
                expr.erase(expr.begin(), expr.begin() + expr.find('-') + 1);
                i = 0;
            }
            else {
                sum -= stoi(std::string(expr.begin(), expr.begin() + expr.find('-')));
                expr.erase(expr.begin(), expr.begin() + expr.find('-') + 1);
                i = 0;
            }
                
        } 
                
    }
    sum += atoi(expr.c_str());
    cout << sum;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2018, 14:43
Ответы с готовыми решениями:

Калькулятор с учетом приоритетов и хранением всего выражения
Нужно что бы калькулятор умел считать с учетом приоритетов (*/,+-),а так же хранить в Log'е не...

Обратная польская запись (калькулятор выражения с учётом приоритетов и скобок)
В интернете очень много написано об обратной польской записи это запись где арифметический...

Создать класс для работы коллекцией Dictionary<string, string>
Создать класс для работы со словарем Dictionary&lt;string, string&gt;. Ключ представляет собой символьное...

Как преобразовать тип System::String ^ в string? (или что можно сделать ещё для работы перегруженного оператора ostream::operator<<)
Друзья! В обработчик события Click добавил такой код: std::ofstream file_out (&quot;file.txt&quot;);...

Добавьте поддержку арифметического выражения любой длины без учёта приоритетов
Здравствуйте,я не понимаю как добавить поддержку арифметического выражения в калькулятор любой...

7
7748 / 6528 / 2972
Регистрация: 14.04.2014
Сообщений: 28,490
08.12.2018, 19:04 2
Там два числа? Почем просто не извлекать отдельно?
0
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
08.12.2018, 19:10  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Там два числа? Почем просто не извлекать отдельно?
3 и больше, в общем сколько угодно
0
7748 / 6528 / 2972
Регистрация: 14.04.2014
Сообщений: 28,490
08.12.2018, 19:19 4
Если нет скобок, то можно и больше 2.
0
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
08.12.2018, 19:28  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
Если нет скобок, то можно и больше 2.
О каких скобках идет речь? Меня интересует именно алгоритм, возможно нужно использовать дополнительные средства, о которых я не знаю.
Например 12*3+45 = 81
0
7748 / 6528 / 2972
Регистрация: 14.04.2014
Сообщений: 28,490
08.12.2018, 19:29 6
В выражении.
0
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
08.12.2018, 19:35  [ТС] 7
Цитата Сообщение от nmcf Посмотреть сообщение
В выражении.
Скобок и вообще каких либо приоритетов не надо.
Если можно, покажите на примере, буду благодарен.
0
7748 / 6528 / 2972
Регистрация: 14.04.2014
Сообщений: 28,490
08.12.2018, 19:39 8
Ну если вводится 5+8, то считываешь
C++
1
2
3
4
int a, b;
char c;
 
cin >> a >> c >> b;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2018, 19:39
Помогаю со студенческими работами здесь

через файлы но без string
1)имееться текстовый фаил book.написать программу которая игнорируя исходное деление этого файла на...

Калькулятор с методом public static String calc(String input)
Не так давно начал изучать Java. На курсах задали задание написать калькулятор с римскими и...

Требуется программист для интересной работы, без отрыва от основной работы.
Нужен сильный программист хорошо понимающий в Машинном коде знающий Паскаль, C++. Желательно...

Требуется программист для интересной работы, без отрыва от основной работы
Нужен сильный программист хорошо понимающий в Машинном коде знающий Паскаль, C++. Желательно...

Калькулятор для лабораторной работы
Имеется калькулятор с лог файлом, который должен записывать порядковый номер операции, операцию,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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