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

Высчитать значение выражения с приоритетами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двумерный массив через вектор http://www.cyberforum.ru/cpp-beginners/thread799073.html
Задача состоит в том, что надо создать массив строк через вектор, т.е. я хочу иметь возмость изменять как количество строк, так и их длину.
C++ Воспользовавшись указателями, поменяйте местами элементы массива с четными и нечетными индексами Решить задачи через Указатели... 3. Дан массив целых чисел. Воспользовавшись указателями, поменяйте местами элементы массива с четными и нечетными индексами (т.е. те элементы массива, которые... http://www.cyberforum.ru/cpp-beginners/thread799061.html
C++ Выбрать из строки все чётные цифры (нуль отнести к ним), если они есть в строке, и поместить их в первый динамический массив, и все нечётные цифры, ес
Решить задачи через Указатели... 2. .Пользователь вводит строку с клавиатуры (максимальная длина строки — 80 символов). Программа должна выбрать из строки все чётные цифры (нуль отнести к ним),...
Определить, является ли число a делителем числа b? C++
определить, является ли число a делителем числа b?
C++ Использование строк http://www.cyberforum.ru/cpp-beginners/thread799043.html
Помогите с алгоритмом программы: вводим текст происходит проверка на наличие цифр прописью, заменяет их и выводит исправленый текст...например ввод: "Вышли тридцать три богатыря.." вывод: "Вышли 33...
C++ нахождение целого числа по информации о его цифрах! в трехзначном числе зачеркнули его последнюю цифру когда в оставшимся двузначном числе переставили цифры а затем приписали к ним слева последнюю цифру числа x, то получилось число n. По заданному n... подробнее

Показать сообщение отдельно
Levondk
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11

Высчитать значение выражения с приоритетами - C++

03.03.2013, 02:45. Просмотров 726. Ответов 11
Метки (Все метки)

Дана строка символов, представляющих собой арифметическое
выражение, содержащее только знаки +,-,*,/,(,) и строчные буквы
английского алфавита. Требуется подсчитать результат выражения.
Вход
Первая строка входа содержит число n ≤ 26 количество параметров,
входящих в арифметическое выражение. Следующие n строк содержат
значение каждого параметра в формате t=x, где t название параметра
(строчная буква английского алфавита), а x из себя представляет
обыкновенную дробь. Следующая строка входа содержит выражение, без
пробелов. Гарантируется, что заданное выражение корректно.
Выход
Выведите результат операции в виде несократимой дроби. Если
знаменатель равен 1, выведите только числитель.
Вот само задание..
Я написал функции для +, -, / и *, но никак не пойму, как нужно составить саму int main (), чтобы программа считала значение выражения по приоритетам, т.е. сперва то, что в скобках, дальше * и /, а дальше уже + и -..

Если не трудно, на основе моей программы помогите дописать или допишите int main ()

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
#include <iostream>
#include <cmath>
using namespace std;
struct frac
{
    int p;
    int q;
};
int gcd ( int a, int b )
{
    if ( a == 0)
        return b;
    return gcd( b%a, a );
}
void krchatel ( frac& a)
{
    int g = gcd ( abs ( a.p ), abs ( a.q ) );
    a.p /= g;
    a.q /= g;
}
frac operator +( const frac& a, const frac& b )
{
    frac c;
    c.p = a.p * b.q + a.q * b.p;
    c.q = a.q * b.q;
    krchatel (c);
    return c;
}
frac operator -( const frac& a, frac& b )
{
    b.p = -b.p;
    return a+b;
}
frac operator *( const frac& a, const frac& b )
{
    frac c;
    c.p = a.p * b.p;
    c.q = a.q * b.q;
    krchatel (c);
    return c;
}
frac operator /( const frac& a, frac& b )
{
    swap( b.p , b.q );
    return a * b;
}
istream& operator >> ( istream& in, frac& f )
{
    char c;
    in >> f.p >> c >> f.q;
    return in;
}
ostream& operator << ( ostream& out, const frac& f )
{
    out << f.p;
if ( f.q != 1 )
    out << "/" << f.q;
return out;
}
int main ()
{
Добавлено через 50 минут
Простите, что АПаю, очень нужна ваша помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru