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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
#1

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

07.09.2013, 17:30. Просмотров 1300. Ответов 14
Метки нет (Все метки)

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

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

Добавлено через 1 минуту
Если честно, то нет...я вообще это плохо понимаю)))
XRuZzz
Антикодер
631 / 532 / 27
Регистрация: 15.09.2012
Сообщений: 2,482
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
Антикодер
631 / 532 / 27
Регистрация: 15.09.2012
Сообщений: 2,482
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
Антикодер
631 / 532 / 27
Регистрация: 15.09.2012
Сообщений: 2,482
07.09.2013, 21:19     Объектно-ориентированная программа для расчета арифметического выражения #9
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Спасибо прочитаю, а по заданию не поможете???
так мы вроде задание и разбираем
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
08.09.2013, 10:09  [ТС]     Объектно-ориентированная программа для расчета арифметического выражения #10
Да,но хотелось бы ближе к коду... как задать перевод числа из 10-тичной в 2-ичную систему? и потом поэлементно разделить в массив...
Catstail
Модератор
22312 / 10717 / 1742
Регистрация: 12.02.2012
Сообщений: 17,792
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
Антикодер
631 / 532 / 27
Регистрация: 15.09.2012
Сообщений: 2,482
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
Сообщений: 443
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++
Программа расчета выражения C++

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

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

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