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

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

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

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

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

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

Шахматы. Объектно-ориентированная программа - C++
Всем привет! Пишу курсовую, смысл такой: шахматная доска с фигурами и могут играть два человека, сидя за одним компом. А программа только...

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

С++. Объектно-ориентированная технология программирования. Обработка матрицы с использованием иерархии классов - C++
Характеристикой строки целочисленной матрицы называется сумма ее положительных четных элементов. Переставляя строки заданной...

Программа расчета выражения - C++
Создать программу расчета математического выражения:

Программа расчета математического выражения - C++
Создать программу расчета математического выражения:

Программа ,вычисляющаю результат вычисления арифметического выражения - C++
Разработайте программу , вычисляющую результат вычисления арифметического выражения, операции и операнды которого передаются через...

14
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
07.09.2013, 17:38 #2
бесплатно такое писать не будут.
0
XRuZzz
Антикодер
680 / 582 / 29
Регистрация: 15.09.2012
Сообщений: 2,525
07.09.2013, 17:42 #3
а у вас совсем мыслей никаких нет? или что то всё таки крутится в голове?
0
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 17:44  [ТС] #4
А за сколько напишут?
Ну я все ж надеюсь очень на помощь...

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

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

на форуме часто создают темы с просьбами разъяснить ООП вы можете найти много таких тем тут.
0
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 21:01  [ТС] #8
Спасибо прочитаю, а по заданию не поможете???
0
XRuZzz
Антикодер
680 / 582 / 29
Регистрация: 15.09.2012
Сообщений: 2,525
07.09.2013, 21:19 #9
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Спасибо прочитаю, а по заданию не поможете???
так мы вроде задание и разбираем
0
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
08.09.2013, 10:09  [ТС] #10
Да,но хотелось бы ближе к коду... как задать перевод числа из 10-тичной в 2-ичную систему? и потом поэлементно разделить в массив...
0
Catstail
Модератор
22639 / 11007 / 1784
Регистрация: 12.02.2012
Сообщений: 18,168
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;
}
2
XRuZzz
Антикодер
680 / 582 / 29
Регистрация: 15.09.2012
Сообщений: 2,525
08.09.2013, 13:33 #12
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Да,но хотелось бы ближе к коду... как задать перевод числа из 10-тичной в 2-ичную систему? и потом поэлементно разделить в массив...
ну можете для начала создать пустой класс, ну как его назвать? NotationConvertors, например для перевода из одной системы счисления в другую. Возможно есть смысл создать класс Binaries для двоичной системы счисления.
Далее вам нужно классы как то описывать, а для этого нужно почитать, то о чем я говорил.

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

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

Добавлено через 4 минуты
я понимаю, что читать и понимать о чем речь студентам бывает тяжело, поэтому можете глянуть лекции о которых я говорил в этой посте Для того чтобы выучить С++ по книге Бьёрна Страуструпа
1
Lero4ka_
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
08.09.2013, 18:59  [ТС] #13
Спасибо) а как теперь этот перевод разделить поэлементно в массив....
0
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
2
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
09.09.2013, 05:18 #15
Цитата Сообщение от XRuZzz Посмотреть сообщение
ну можете для начала создать пустой класс, ну как его назвать? NotationConvertors, например для перевода из одной системы счисления в другую.
а при чём тут перевод из одной системы счисления в другую. Все эти переводы осуществляются средствами языка.
Все данные, которыми оперирует компьютер - двоичные числа! А с помощью функций/операторов ввода/вывода, например cin>>n язык преобразует строку с числом в десятичной записи, введённую с клавы в двоичные данные, хранящиеся в переменной в памяти!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 05:18
Привет! Вот еще темы с ответами:

Программа разбора и вычисления значения арифметического выражения - C++
Написать программу разбора и вычисления значения арифметического выражения. На входе программы — строка, содержащая числа, скобки «(» и...

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

Написать ООП для распознования арифметического выражения - C++
Суть программы заключается в том, чтобы можно было ввести какое то выражение, например: (6-9) + 7 программа должна: 1. Перевести каждое...

Приложение для вычисления значения арифметического выражения - C++
Здравствуйте , подскажите пожалуйста как решить вот эту задачу : Создать приложение для вычисления значения арифметического выражения,...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
09.09.2013, 05:18
Ответ Создать тему
Опции темы

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