Форум программистов, компьютерный форум 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 найти число x( значение n вводится с клавиатуры 1<=n<=999 и при это число единиц в n не равно нулю) подробнее

Показать сообщение отдельно
Levondk
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
16.03.2013, 02:15  [ТС]     Высчитать значение выражения с приоритетами
У вас реально все сложно написано)
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
#include <iostream>
#include <string>
using namespace std;
 
int work(int a, int b, char op)
{
    if (op == '+')
        return a + b;
    if (op == '-')
        return a - b;
    if (op == '*')
        return a * b;
    if (op == '/')
        return a / b;
}
 
int main ()
{
    string s;
    cin >> s;
    s = "(" + s + ")"; 
    char b[100];
    int g = 0;
    int a[100];
    int d = 0;
    for ( int i = 0 ; i < s.size(); i++ )
        {
            if ( s[i] == '+' )
            {
                b[g] = s[i];
                g++;
            }
            if ( s[i] == '-' )
            {
                b[g] = s[i];
                g++;
            }
            if ( s[i] == '/' )
            {
                b[g] = s[i];
                    g++;
            }
            if ( s[i] == '*' )
            {
                b[g] = s[i];
                    g++;
            }
            if ( s[i] == '(' )
            {
                b[g] = s[i];
                    g++;
            }
 
            if (s[i] == ')')
            {
                while (b[g-1] != '(')
                {
                    a[d-2] = work(a[d - 2], a[d-1], b[g-1]);
                    d--;
                    g--;
                }
            }
 
            if ( s[i] >= '0' && s[i] <= '9')
            {
                if (g > 0 && b[g - 1] == '*')
                {
                    a[d - 1] = a[d - 1] * (s[i] - '0');
                    g--;
                } else
                if (g > 0 && b[g - 1] == '/')
                {
                    a[d - 1] = a[d - 1] / (s[i] - '0');
                    g--;
                } else
                {
                    a[d] = s[i] - '0';
                    d++;
                }
            }
        }
    cout << a[0];
}
Вот это я написал для чисел от 0-9 (это чтобы легче было в чар писать). Если кто может допилить или помочь мне самому допилить, то заранее спасибо. Нужно переделать программу для дробей. Т.е. вот мои операторы для дробей. Нужно, чтобы эта программа заработала для любых дробей)

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
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-ы на frac, то возникают проблемы даже со счетчиками в цикле for, поэтому и не смог сам допилить программу..
 
Текущее время: 09:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru