Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
yuruyu55
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
1

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

08.12.2018, 14:43. Просмотров 336. Ответов 7

Нужно написать калькулятор для работы с знаками "+" "-" "/" "*" через 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2018, 14:43
Ответы с готовыми решениями:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин; −...

Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей";
Помогите пожалуйста с задачей. Могу сделать ее просто, но надо через ООП и у меня не получается. ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько...

7
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
08.12.2018, 19:04 2
Там два числа? Почем просто не извлекать отдельно?
0
yuruyu55
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
08.12.2018, 19:10  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Там два числа? Почем просто не извлекать отдельно?
3 и больше, в общем сколько угодно
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
08.12.2018, 19:19 4
Если нет скобок, то можно и больше 2.
0
08.12.2018, 19:19
yuruyu55
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
08.12.2018, 19:28  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
Если нет скобок, то можно и больше 2.
О каких скобках идет речь? Меня интересует именно алгоритм, возможно нужно использовать дополнительные средства, о которых я не знаю.
Например 12*3+45 = 81
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
08.12.2018, 19:29 6
В выражении.
0
yuruyu55
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 5
08.12.2018, 19:35  [ТС] 7
Цитата Сообщение от nmcf Посмотреть сообщение
В выражении.
Скобок и вообще каких либо приоритетов не надо.
Если можно, покажите на примере, буду благодарен.
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
08.12.2018, 19:39 8
Ну если вводится 5+8, то считываешь
C++
1
2
3
4
int a, b;
char c;
 
cin >> a >> c >> b;
0
08.12.2018, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2018, 19:39

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

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата"
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru