Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8

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

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

Студворк — интернет-сервис помощи студентам
Необходимо написать объектно-ориентированную программу, которая принимает на вход арифметическое выражение (только сложение и вычитание с отрицательными и положительными числами), переводит все в двоичную систему, там поэлементно через массив производит вычисления и выдает ответ в двоичной и десятичной системе.
Кол-во пробелов не ограничено и не указано. При вводе отрицательных чисел ставятся скобки)))
Помогите пожалуйста, возможно использование не С++, а там паскаль или что-то другое....)))))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.09.2013, 17:30
Ответы с готовыми решениями:

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

Функция для расчета арифметического выражения
Написать функцию для расчета арифметического выражения. Параметры в функцию передавать как указатели, а результат возвращать по значению. ...

Перегруженная функция для расчета арифметического выражения
Написать перегруженную функцию для расчета арифметического выражения с входными типами данных int, short int, float, double. Параметры a...

14
Ghost
 Аватар для Belfegor
174 / 174 / 40
Регистрация: 16.09.2012
Сообщений: 526
07.09.2013, 17:38
бесплатно такое писать не будут.
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
07.09.2013, 17:42
а у вас совсем мыслей никаких нет? или что то всё таки крутится в голове?
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 17:44  [ТС]
А за сколько напишут?
Ну я все ж надеюсь очень на помощь...

Добавлено через 1 минуту
Если честно, то нет...я вообще это плохо понимаю)))
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
07.09.2013, 17:49
а что конкретно? начало понимаете?
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Необходимо написать объектно-ориентированную программу
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 17:56  [ТС]
Ну что должен быть класс внутри,которого заданны объекты....наверное

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

на форуме часто создают темы с просьбами разъяснить ООП вы можете найти много таких тем тут.
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
07.09.2013, 21:01  [ТС]
Спасибо прочитаю, а по заданию не поможете???
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
07.09.2013, 21:19
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Спасибо прочитаю, а по заданию не поможете???
так мы вроде задание и разбираем
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
08.09.2013, 10:09  [ТС]
Да,но хотелось бы ближе к коду... как задать перевод числа из 10-тичной в 2-ичную систему? и потом поэлементно разделить в массив...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
08.09.2013, 12:40
Цитата Сообщение от 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
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
08.09.2013, 13:33
Цитата Сообщение от Lero4ka_ Посмотреть сообщение
Да,но хотелось бы ближе к коду... как задать перевод числа из 10-тичной в 2-ичную систему? и потом поэлементно разделить в массив...
ну можете для начала создать пустой класс, ну как его назвать? NotationConvertors, например для перевода из одной системы счисления в другую. Возможно есть смысл создать класс Binaries для двоичной системы счисления.
Далее вам нужно классы как то описывать, а для этого нужно почитать, то о чем я говорил.

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

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

Добавлено через 4 минуты
я понимаю, что читать и понимать о чем речь студентам бывает тяжело, поэтому можете глянуть лекции о которых я говорил в этой посте Для того чтобы выучить С++ по книге Бьёрна Страуструпа
1
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 8
08.09.2013, 18:59  [ТС]
Спасибо) а как теперь этот перевод разделить поэлементно в массив....
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
09.09.2013, 02:04
Цитата Сообщение от 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
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
09.09.2013, 05:18
Цитата Сообщение от XRuZzz Посмотреть сообщение
ну можете для начала создать пустой класс, ну как его назвать? NotationConvertors, например для перевода из одной системы счисления в другую.
а при чём тут перевод из одной системы счисления в другую. Все эти переводы осуществляются средствами языка.
Все данные, которыми оперирует компьютер - двоичные числа! А с помощью функций/операторов ввода/вывода, например cin>>n язык преобразует строку с числом в десятичной записи, введённую с клавы в двоичные данные, хранящиеся в переменной в памяти!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2013, 05:18
Помогаю со студенческими работами здесь

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

Объектно-ориентированная база
Подскажите пожалуйста методы создания объектно-ориентированной базы на VB (то есть через создание классовых модулей, Property Get и т д),...

Объектно-ориентированная технология
Необходимо выполнить задание №3 из вложенного документа. В нём есть пример как делать.

объектно-ориентированная задача
Какую подобную задачу можно порешать с помощью клиентского js ?

Объектно-ориентированная декомпозиция
Здравствуйте есть Справочник покупателя в нём указанны номер телефона время работы и тд мне нужно реализовать классы для представления...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru