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

Длинная арифметика

29.10.2020, 21:28. Показов 1512. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Строка состоит из целых чисел, принимающих значения от 0 до 10^9, разделенных знаками операций “+”, “-” и “*”. Вычислите значение этого выражения выполняя действия по правилам арифметики.

Примеры
входные данные
8-2*3
выходные данные
2

Очевидно, что задача на длинную арифметику. Могу написать функции для арифметических операций отдельно, а вот собрать все в единую картину - никак. Особые проблемы возникают в попытках выделить из строки число.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2020, 21:28
Ответы с готовыми решениями:

Длинная арифметика
Нужно написать программу которая полностью выводит число 2^-200. (желательно с комментариями, для...

Длинная арифметика
Вот условие задачи: Во время исследований, посвященных появлению жизни на планете Олимпия, учеными...

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

Длинная арифметика
Очень важный аспект в программировании - длинная и быстрая арифметика. Собственно в этой теме я...

1
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 562
29.10.2020, 22:42 2
Лучший ответ Сообщение было отмечено mangomang как решение

Решение

mangomang, примерно что-то типо этого:
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
#include <iostream>
#include <vector>
using namespace std;
 
void expression(const string& text, vector<string>& numbers, vector<string>& operations)
{
    string number = "";
 
    for (size_t i = 0; i < text.size(); i++)
        if (text[i] >= '0' && text[i] <= '9')
            number += text[i];
        else
        {
            if (text[i] == '+' || text[i] == '-' || text[i] == '*' || text[i] == '/')
                operations.push_back(text[i]);
            
            numbers.push_back(number);
            number = "";
        }
 
    if (number.size() > 0)
        numbers.push_back(number);
}
 
string add(const string& first, const string& second)
{
    string result = "";
    /* <...> */
    return result;
}
 
string deduct(const string& first, const string& second)
{
    string result = "";
    /* <...> */
    return result;
}
 
string multiply(const string& first, const string& second)
{
    string result = "";
    /* <...> */
    return result;
}
 
string divide(const string& first, const string& second)
{
    string result = "";
    /* <...> */
    return result;
}
 
 
 
int main()
{
    string text = "100000000+898298-5*2763", result = "";
    vector<string> numbers, operations;
    intFromString(text, numbers, operations);
 
    for (size_t i = 0; i < numbers.size(); i++)
        cout << numbers[i] << " ";
        
    for (size_t i = 0; i < operations.size(); i++)
        cout << operations[i] << " ";
    
    if (numbers.size() - operations.size() == 1)
    {
        result = numbers[0];
        
        for (size_t i = 0; i < operations.size(); i++)
            if (operations[i] == '+')
                result = add(result, numbers[i + 1]);
            else if (operations[i] == '-')
                result = deduct(result, numbers[i + 1]);
            else if (operations[i] == '*')
                result = multiply(result, numbers[i + 1]);
            else if (operations[i] == '/')
                result = divide(result, numbers[i + 1]);
            
        cout << result << endl;
    }
 
    return 0;
}
Функции сложения, вычитания, умножения, деления напишите сами, можно ориентироваться на школьный способ решения столбиком.
1
29.10.2020, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2020, 22:42
Помогаю со студенческими работами здесь

Длинная арифметика
Ребята,объясните как решить задачу , напишите хоть часть кода. Пусть даны числа a , b . Найти...

Длинная арифметика
Подскажите, пожалуйста, где ошибки в программе. Еще хотелось бы узнать, правильно ли реализована...

длинная арифметика
Долгое время бьюсь как составить программу по этой теме в интернете искал нашел это for (int...

Длинная арифметика
:senor: Здраствуйте, пишу модуль длинной математики. В принципе, работоспособность у него...

Длинная арифметика
http://www.********/index.asp?main=task&amp;id_task=103 Как решить эту задачу? С помощью чего, и в...

Длинная арифметика
Как сделать типы длинных чисел, например, знаковое 256-ти битное целое и 256-ти битное вещественное...


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

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

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