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

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

Войти
Регистрация
Восстановить пароль
 
Yanexx
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
#1

Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд - C++

04.09.2013, 18:46. Просмотров 377. Ответов 8
Метки нет (Все метки)

Доброго времени суток, уважаемы пользователи CyberForum!

Нуждаюсь в Вашей помощи. Прочитал уже много информации по ООП, но что-то никак оно мне не поддаётся...
Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд.

С классами ранее не работал. У меня есть общее представление по реализации, что переменные мы приватим, а потом создаём ещё 4 и присваиваем им те же значения и работаем уже с ними, а потом возвращаем результат, но всё правильно составить не получается...(
В виде обычной функции это всё просто, но задание именно на освоение ООП.
C++
1
2
3
double TCalc(float a, int b, int c, double d){
    return (log10(4*a-1)+b/2)/(d/c-5);
}
И если можно объяснить более яснее(не абстрактно, что человечество - это класс, а мальчик Алёша - это объект и тд. и тп., а именно с точки зрения программирования).
Большое спасибо!))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 18:46     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд
Посмотрите здесь:

Какие средства ООП можно применить для описания Игрока и Противника? - C++
Всем доброго времени суток! Ситуация следующая: написал игру на курсовой в универе. Основная цель: написать графическую игру с...

Рассчитать сумму используя цикл do-while - C++
Помогите написать программу на C++, которая б считала данную сумму с применением цикла do-while. y=\sum_{k=1}^{5}(k+e^x)

Библиотеки раскрывают инкапсуляцию - C++
.h: #include <string> class A { public: A(); ~A(); private:

Как не нарушить инкапсуляцию? - C++
Попал в такой парадокс... Есть класс "А" Есть класс "Б" Есть класс "В, который наследник класса А". У класса А есть три...

Рассчитать значение функции, используя ряды Тэйлора - C++
Здравствуйте! Мне надо рассчитать значение функции (1+х)^a использую ряды Тэйлора. х и а принадлежат промежутку (-1;1). Проблема...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2013, 20:30     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #2
Цитата Сообщение от Yanexx Посмотреть сообщение
У меня есть общее представление по реализации, что переменные мы приватим, а потом создаём ещё 4 и присваиваем им те же значения и работаем уже с ними, а потом возвращаем результат,
Класс - это пользовательский тип данных. Сначала нужно придумать тип данных, который необходим для решения задачи. Отправная точка - тип данных, а не методы (функции). Эта функция сама по себе, или используется в каком-то контексте? Её назначение?
Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
04.09.2013, 20:32     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #3
Цитата Сообщение от Yanexx Посмотреть сообщение
Доброго времени суток, уважаемы пользователи CyberForum!

Нуждаюсь в Вашей помощи. Прочитал уже много информации по ООП, но что-то никак оно мне не поддаётся...
Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд.

С классами ранее не работал. У меня есть общее представление по реализации, что переменные мы приватим, а потом создаём ещё 4 и присваиваем им те же значения и работаем уже с ними, а потом возвращаем результат, но всё правильно составить не получается...(
В виде обычной функции это всё просто, но задание именно на освоение ООП.
C++
1
2
3
double TCalc(float a, int b, int c, double d){
    return (log10(4*a-1)+b/2)/(d/c-5);
}
И если можно объяснить более яснее(не абстрактно, что человечество - это класс, а мальчик Алёша - это объект и тд. и тп., а именно с точки зрения программирования).
Большое спасибо!))
Это большая тема, в которую стоит вникать. Очень сильно сомневаюсь, что на форуме, кто либо сможет доходчиво, а главное полно ответить на ваш вопрос, нежели любое издание печатной продукции, прошедшее не одну редакцию.
Yanexx
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
04.09.2013, 20:49  [ТС]     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Эта функция сама по себе, или используется в каком-то контексте? Её назначение?
Задание: необходимо всего лишь вычислисть это выражение, но обязательно применяя ООП.
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
04.09.2013, 21:00     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #5
Цитата Сообщение от Yanexx Посмотреть сообщение
Задание: необходимо всего лишь вычислисть это выражение, но обязательно применяя ООП.
Маленько не понял, зачем ту ООП...
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2013, 21:10     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #6
Цитата Сообщение от RUSya82 Посмотреть сообщение
Маленько не понял, зачем ту ООП...
Ещё и по-максимуму...
Yanexx
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
04.09.2013, 21:23  [ТС]     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #7
Цитата Сообщение от RUSya82 Посмотреть сообщение
Маленько не понял, зачем ту ООП...
Лаба такая, по курсу ООП
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
04.09.2013, 22:27     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #8
Это типа как танком гвозди забивать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 00:05     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд
Еще ссылки по теме:

Рассчитать значение функции, используя массив (файловый ввод/вывод) - C++
Дается массив из след.элементов(44 штуки):...

Рассчитать значения выражений используя для ввода и вывода текстовые файлы - C++
Нужна помощь! Вот задание: Составить программу для расчета значений z1 и z2 (результаты должны совпадать). Исходные данные считываются...

Как удобнее обойти инкапсуляцию в программе из нескольких файлов на С/С++? - C++
Ситуация такая: в программах на Бейсике, например, существуют единые для всего кода переменные, с которыми можно полноценно работать в...

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


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.09.2013, 00:05     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд #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
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
#include <iostream>
#include <fstream>
using namespace std;
 
class TCalc
{
    float a;
    int b;
    int c;
    double d;
    double result;
    
    int f_valid; // флаг валидности
 
    void valid(int c, double d)
    {
        if (c == 5 && d == 0) f_valid = 3;
        else if (c == 5)  f_valid = 1;
        else if (d == 0)   f_valid = 2;
        else f_valid = 5;
    }
 
    void show_err()
    {
        if (f_valid == 5) cout << "Valid!\n";
        if (f_valid == 1) cout << "Invalid c! c = " << c << endl;
        if (f_valid == 2) cout << "Invalid d! d = " << d << endl;
        if (f_valid == 3) cout << "Invalid c end d! c = " << c << ", d = " << d << endl;
     }
    
    void f()
    {
        if (f_valid == 5)
             result = (log10(4 * a - 1) + b / 2) / (d / c - 5);
        else result = 0;
    }
    
public :
    
    TCalc(float a, int b, int c, double d)
    {
        valid(c, d);
        this ->a = a;
        this ->b = b;
        this ->c = c;
        this ->d = d;
        f();
        show_err();
     }
 
    ~TCalc()
    {}
    
    double get_result() 
    { 
        if (f_valid == 5) return result;
        else 
        {
            show_err();
            cout << "result invalid! ";
            return result;
        }
    }
    
    float  get_a()         { return a;       } const
    int    get_b()         { return b;       } const
    int    get_c()         { return c;       } const
    double get_d()         { return d;       } const
    int    get_f_valid()   { return f_valid; } const
 
    void change_a(float  a) { this ->a = a; f();}
    void change_b(int    b) { this ->b = b; f();}
    void change_c(int    c) { this ->c = c; f();}
    void change_d(double d) { this ->d = d; f();}
 
    void show()
    {
        cout << endl;
        show_err();
        cout << "a = "      << a << endl;
        cout << "b = "      << b << endl;
        cout << "c = "      << c << endl;
        cout << "d = "      << d << endl;
        if (f_valid != 5)
            cout << "result invalid! ";
        cout << "result = " << result << endl;
    }
 
};
 
int main ()
{
    setlocale(0, "");
    
    float a;
    int b;
    int c;
    double d;
    
    char ch = 'y';
    do
    {
        cin >> a >> b >> c >> d;
        
        TCalc T(a, b, c, d);
        
        T.show();
        
        T.change_a(6);
        
        T.show();
        cout << endl;
        
        cout << T.get_result() << endl;
 
        double r;
        if (T.get_f_valid() == 5) 
        {
             r = T.get_result();
             cout << "r = " << r << endl;
        }
        
        cout << "\nContinue? (y): ";
        (cin >> ch).get();
    
    } while (ch == 'y');
    
    return 0;
}
Yandex
Объявления
05.09.2013, 00:05     Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд
Ответ Создать тему
Опции темы

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