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

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

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

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

04.09.2013, 18:46. Просмотров 399. Ответов 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);
}
И если можно объяснить более яснее(не абстрактно, что человечество - это класс, а мальчик Алёша - это объект и тд. и тп., а именно с точки зрения программирования).
Большое спасибо!))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 18:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд (C++):

Необходимо описать предметную область (кадровое агенство), используя принципы ООП - C#
Добрый день. Задача заключается в следующем: Необходимо описать предметную область (кадровое агенство), используя принципы ООП. Задачу,...

Какое выражение необходимо подставить, чтобы данное логическое выражение стало истинным? - Информатика
Если вместо знака "?" подставить одно из выражений, то при х=1 данное логическое выражение станет истинным "?" ((x>0) and (x<=1)) and "?"...

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

Рассчитать выражение - Delphi
При нажатии на кнопку вычисляется заданное арифметическое выражение для данных в форматах REAL (переменные a,b) и INTEGER (остальные...

MS Access Используя запросы, необходимо обновить данные в таблице используя DBLookupComboBox - Delphi БД
Здравствуйте. Есть проекте(прикреплен к топику), в нем присутствует форма, которая редактирует текущую БД, для удобства используется...

Рассчитать заданное выражение - Turbo Pascal
Рассчитать заданное выражение, принимающее целое значение для данных a, b в формате INTEGER, использовав оператор IF. Результат Х - тоже...

8
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2013, 20:30 #2
Цитата Сообщение от Yanexx Посмотреть сообщение
У меня есть общее представление по реализации, что переменные мы приватим, а потом создаём ещё 4 и присваиваем им те же значения и работаем уже с ними, а потом возвращаем результат,
Класс - это пользовательский тип данных. Сначала нужно придумать тип данных, который необходим для решения задачи. Отправная точка - тип данных, а не методы (функции). Эта функция сама по себе, или используется в каком-то контексте? Её назначение?
0
Hugra
48 / 48 / 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);
}
И если можно объяснить более яснее(не абстрактно, что человечество - это класс, а мальчик Алёша - это объект и тд. и тп., а именно с точки зрения программирования).
Большое спасибо!))
Это большая тема, в которую стоит вникать. Очень сильно сомневаюсь, что на форуме, кто либо сможет доходчиво, а главное полно ответить на ваш вопрос, нежели любое издание печатной продукции, прошедшее не одну редакцию.
0
Yanexx
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
04.09.2013, 20:49  [ТС] #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Эта функция сама по себе, или используется в каком-то контексте? Её назначение?
Задание: необходимо всего лишь вычислисть это выражение, но обязательно применяя ООП.
0
RUSya82
237 / 115 / 3
Регистрация: 15.10.2010
Сообщений: 395
04.09.2013, 21:00 #5
Цитата Сообщение от Yanexx Посмотреть сообщение
Задание: необходимо всего лишь вычислисть это выражение, но обязательно применяя ООП.
Маленько не понял, зачем ту ООП...
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2013, 21:10 #6
Цитата Сообщение от RUSya82 Посмотреть сообщение
Маленько не понял, зачем ту ООП...
Ещё и по-максимуму...
0
Yanexx
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 33
04.09.2013, 21:23  [ТС] #7
Цитата Сообщение от RUSya82 Посмотреть сообщение
Маленько не понял, зачем ту ООП...
Лаба такая, по курсу ООП
0
RUSya82
237 / 115 / 3
Регистрация: 15.10.2010
Сообщений: 395
04.09.2013, 22:27 #8
Это типа как танком гвозди забивать.
0
alsav22
5436 / 4831 / 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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 00:05
Привет! Вот еще темы с ответами:

Как рассчитать следующее выражение - Matlab
Здравствуйте, пробовал преобразовать код под свой интерграл, получается бред и постоянные ошибки, может быть кто поможет, вот интеграл:...

Необходимо рассчитать интеграл и построить график - Matlab
%s=0.07; v0=3; x=0.1; vz=(v0*0.265)/x; r=1; z=; c0=0.082; w=r/c0; v=vz*exp(-0.5*(w*z).^2); syms z

Ввести в консоль выражение и рассчитать его - C#
Есть выражение типа &quot;2+4*(8/9+(5-3))&quot; Необходимо написать программу в C# где в консоль вводим данное выражение и программа считает чему...

При копировании текста из екселя в ворд, необходимо к копируемому тексту применить стиль маркера кружком - VBA
При копировании текста из екселя в ворд, необходимо к копируемому тексту применить стиль маркера кружком. Не подскажите как это...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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