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

Объектно-ориентированная программа для расчета арифметического выражения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 17:30     Объектно-ориентированная программа для расчета арифметического выражения #1
Необходимо написать объектно-ориентированную программу, которая принимает на вход арифметическое выражение (только сложение и вычитание с отрицательными и положительными числами), переводит все в двоичную систему, там поэлементно через массив производит вычисления и выдает ответ в двоичной и десятичной системе.
Кол-во пробелов не ограничено и не указано. При вводе отрицательных чисел ставятся скобки)))
Помогите пожалуйста, возможно использование не С++, а там паскаль или что-то другое....)))))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2013, 17:30     Объектно-ориентированная программа для расчета арифметического выражения
Посмотрите здесь:

C++ Шахматы. Объектно-ориентированная программа
Программа ,вычисляющаю результат вычисления арифметического выражения C++
C++ Программа разбора и вычисления значения арифметического выражения
C++ С++. Объектно-ориентированная технология программирования. Обработка матрицы с использованием иерархии классов
Программа на С++ для вычисления арифметического выражения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Belfegor
Ghost
 Аватар для Belfegor
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
07.09.2013, 17:38     Объектно-ориентированная программа для расчета арифметического выражения #2
бесплатно такое писать не будут.
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 17:42     Объектно-ориентированная программа для расчета арифметического выражения #3
а у вас совсем мыслей никаких нет? или что то всё таки крутится в голове?
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 17:44  [ТС]     Объектно-ориентированная программа для расчета арифметического выражения #4
А за сколько напишут?
Ну я все ж надеюсь очень на помощь...

Добавлено через 1 минуту
Если честно, то нет...я вообще это плохо понимаю)))
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 17:49     Объектно-ориентированная программа для расчета арифметического выражения #5
а что конкретно? начало понимаете?
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Необходимо написать объектно-ориентированную программу
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 17:56  [ТС]     Объектно-ориентированная программа для расчета арифметического выражения #6
Ну что должен быть класс внутри,которого заданны объекты....наверное

Добавлено через 1 минуту
это подразумивает объектно-ориент программу.... мы начинали писать в eclipse на JAVA....объяснили только как создавать массив..и всё
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 19:39     Объектно-ориентированная программа для расчета арифметического выражения #7
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Ну что должен быть класс внутри,которого заданны объекты....наверное
ну я бы так не сказал, тут скорее нужно сказать, что мы оперируем объектами, а заданы они могут быть где угодно.
Вас не затруднит почитать хотя бы вики ООП
ООП хорошо объясняет в своей книге, Дейтел например.
посмотрите книги из раздела Hello World в этой теме Литература C++
А то очень долго придётся объяснять вам, что означает эта фраза "Необходимо написать объектно-ориентированную программу"

на форуме часто создают темы с просьбами разъяснить ООП вы можете найти много таких тем тут.
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 21:01  [ТС]     Объектно-ориентированная программа для расчета арифметического выражения #8
Спасибо прочитаю, а по заданию не поможете???
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
07.09.2013, 21:19     Объектно-ориентированная программа для расчета арифметического выражения #9
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Спасибо прочитаю, а по заданию не поможете???
так мы вроде задание и разбираем
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
08.09.2013, 10:09  [ТС]     Объектно-ориентированная программа для расчета арифметического выражения #10
Да,но хотелось бы ближе к коду... как задать перевод числа из 10-тичной в 2-ичную систему? и потом поэлементно разделить в массив...
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
08.09.2013, 12:40     Объектно-ориентированная программа для расчета арифметического выражения #11
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
как задать перевод числа из 10-тичной в 2-ичную систему?
- есть функция atoi.
А если "ручками", то :

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
#include <iostream.h>
 
int atoint(char *s)
{
    int r=0,i;
    char c;
 
    for (i=0;;i++)
    {
        c=*(s+i);
        if (c == 0) break;
        r=r*10+(int)(c-48);
    }
    return r;
}
 
int main(int argc, char* argv[])
{
    char *s="6789";
 
    cout << atoint(s) << endl;
 
    return 0;
}
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
08.09.2013, 13:33     Объектно-ориентированная программа для расчета арифметического выражения #12
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Да,но хотелось бы ближе к коду... как задать перевод числа из 10-тичной в 2-ичную систему? и потом поэлементно разделить в массив...
ну можете для начала создать пустой класс, ну как его назвать? NotationConvertors, например для перевода из одной системы счисления в другую. Возможно есть смысл создать класс Binaries для двоичной системы счисления.
Далее вам нужно классы как то описывать, а для этого нужно почитать, то о чем я говорил.

Кроме ООП в вики есть статья по C++, которую так же полезно почитать.
Страуструп(создатель C++) в своей книге The C++ Programming Language (2013) рекомендует не останавливаться на ООП, а комбинировать ООП с другими стилями: обобщенным, процедурным программированием и абстракцией данных. что это означает читайте в его книге...

Добавлено через 1 минуту
просто я сомневаюсь, что следующим заданием будет например "Напишите программу в обобщенном стиле программирования..."

Добавлено через 4 минуты
я понимаю, что читать и понимать о чем речь студентам бывает тяжело, поэтому можете глянуть лекции о которых я говорил в этой посте Для того чтобы выучить С++ по книге Бьёрна Страуструпа
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
08.09.2013, 18:59  [ТС]     Объектно-ориентированная программа для расчета арифметического выражения #13
Спасибо) а как теперь этот перевод разделить поэлементно в массив....
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
09.09.2013, 02:04     Объектно-ориентированная программа для расчета арифметического выражения #14
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
написать объектно-ориентированную программу, которая принимает на вход арифметическое выражение (только сложение и вычитание с отрицательными и положительными числами), переводит все в двоичную систему, там поэлементно через массив производит вычисления и выдает ответ в двоичной и десятичной системе.
Кол-во пробелов не ограничено и не указано. При вводе отрицательных чисел ставятся скобки)))
Примерно так можно:
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <string>
#include <vector>
#include <iostream>
 
using namespace std;
 
class expr {
public:
    enum operation {
        add,
        subtract
    };
    void init(int val) {
        values.clear();
        operations.clear();
        values.push_back(val);
    }
    void append(operation op, int val) {
        operations.push_back(op);
        values.push_back(val);
    }
    int calc() const {
        if (values.empty())
            return 0;
        int sum = values[0];
        for (size_t i = 0; i < operations.size(); ++i) {
            operation op = operations[i];
            int v = values[i + 1];
            sum = (op == add) ? sum + v : sum - v;
        }
        return sum;
    }
private:
    vector<int> values;
    vector<operation> operations;
};
 
class parser {
public:
    parser(const char* s) : cur(s) {}
 
    bool parse(expr& e) {
        if (!*cur)
            return false;
        int val;
        if (!number(val))
            return false;
        e.init(val);
        expr::operation op;
        while (*cur) {
            if (!operation(op))
                return false;
            if (!number(val))
                return false;
            e.append(op, val);
            skip();
        }
        return true;
    }
private:
    void skip() {
        while (*cur == ' ')
            ++cur;
    }
    bool number(int& val) {
        skip();
        bool needCloseParen = false;
        if (*cur == '(') {
            ++cur;
            skip();
            needCloseParen = true;
        }
        bool negative = false;
        if (*cur == '+' || *cur == '-') {
            negative = (*cur == '-');
            ++cur;
            skip();
        }
        if (*cur < '0' && *cur > '9')
            return false;
        val = 0;
        while (*cur >= '0' && *cur <= '9') {
            val = 10*val + (*cur - '0');
            ++cur;
        }
        if (negative)
            val = -val;
        if (needCloseParen) {
            skip();
            if (*cur != ')')
                return false;
            ++cur;
        }
        return true;
    }
    bool operation(expr::operation& op) {
        skip();
        if (*cur == '+' || *cur == '-') {
            op = (*cur == '+') ? expr::add : expr::subtract;
            ++cur;
            return true;
        }
        return false;
    }
    const char* cur;
};
 
string binary(int val) {
    string s;
    int n = sizeof(int)*CHAR_BIT;
    while(n--) {
        char c = ((1 << n) & val) ? '1' : '0';
        if (c == '1' || !s.empty())
            s += c;
    }
    return s;
}
 
void calc(const string& s) {
    expr e;
    parser p(s.c_str());
    if (!p.parse(e)) {
        cout << "Expression \"" << s << "\" is not valid!" << endl;
    } else {
        int val = e.calc();
        cout << "Value of expression \"" << s << "\" is " << val
             << " = " << binary(val) << endl;
    }
}
 
int main() {
    calc("2 + 3");
    calc("2 + (-3) ");
    calc("1 + (-5) - 3 - (-2)");
}
Цитата Сообщение от stdout
Value of expression "2 + 3" is 5 = 101
Value of expression "2 + (-3) " is -1 = 11111111111111111111111111111111
Value of expression "1 + (-5) - 3 - (-2)" is -5 = 11111111111111111111111111111011
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 05:18     Объектно-ориентированная программа для расчета арифметического выражения
Еще ссылки по теме:

C++ Составить программу для расчета среднего арифметического двух любых элементов массива
C++ Программа расчета математического выражения
C++ - Программа расчета выражения C++

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
09.09.2013, 05:18     Объектно-ориентированная программа для расчета арифметического выражения #15
Цитата Сообщение от XRuZzz Посмотреть сообщение
ну можете для начала создать пустой класс, ну как его назвать? NotationConvertors, например для перевода из одной системы счисления в другую.
а при чём тут перевод из одной системы счисления в другую. Все эти переводы осуществляются средствами языка.
Все данные, которыми оперирует компьютер - двоичные числа! А с помощью функций/операторов ввода/вывода, например cin>>n язык преобразует строку с числом в десятичной записи, введённую с клавы в двоичные данные, хранящиеся в переменной в памяти!!!
Yandex
Объявления
09.09.2013, 05:18     Объектно-ориентированная программа для расчета арифметического выражения
Ответ Создать тему
Опции темы

Текущее время: 23:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru