Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
asdfghj
0 / 0 / 1
Регистрация: 06.10.2011
Сообщений: 5
#1

совмещение ооп и фп в одной программе - C++

06.10.2011, 05:41. Просмотров 651. Ответов 9
Метки нет (Все метки)

Суть такая. нужно не прибегая к классам сделать функции с одним названием но разным исполнением, в зависимости от типа числа чтобы выбирались разные методы. использовать наследование.

мне объяснили это так.

Add(a,b)
float
complex

num
float num
void numAdd

complex Num
float im
num Add

как это сделать я не знаю, помогите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2011, 05:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос совмещение ооп и фп в одной программе (C++):

Несколько функций в одной программе
Проблема такая. Пишу программу, хочу, чтобы при выборе определенного номера...

две функции в одной программе
Добрый день. Есть проблема. Нужна помощь. Изучая с++ по самоучителю. Там...

Два потока в одной программе
Две фунцкии одной программы оформить как две функции потока. После ввода...

Сделать все задание в одной программе)
1)дан целочисленный массив. проверить образует ли элементы геометрическую...

Несколько алгоритмов сортировки в одной программе
Здравствуйте, форумчане. Подскажите пожалуйста, у меня есть 5 кодов программ....

Сортировки: пять методов на выбор в одной программе
Помогите написать програмку которая сортирует пьятьма методами на выбор 1)...

9
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.10.2011, 05:51 #2
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
#include <iostream>
 
void f(const char* i)
{
    std::cout << "f(const char*) called\n";
}
 
void f(int i)
{
    std::cout << "f(int) called\n";
}
 
void f(float i)
{
    std::cout << "f(float) called\n";
}
 
void f(double i)
{
    std::cout << "f(double) called\n";
}
 
int main()
{
    f(100.500);
    f("100500");
    f(100500);
    f(100.500f);
    return 0;
}
1
asdfghj
0 / 0 / 1
Регистрация: 06.10.2011
Сообщений: 5
06.10.2011, 05:55  [ТС] #3
а это точно та программа (я не очень силен в программировании). просто не вижу комплексных чисел (и как-то маловато, задание на больше расписано )
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.10.2011, 05:57 #4
asdfghj, с комплексными числами сами напишите, там все по аналогии, а эту программу я вам привел для примера
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
06.10.2011, 06:01 #5
Цитата Сообщение от asdfghj Посмотреть сообщение
совмещение ооп и фп в одной программе
каким ты видишь ФП в С/С++? Поделись с нами. А то я, к примеру, слабо его себе представляю.


Цитата Сообщение от asdfghj Посмотреть сообщение
нужно не прибегая к классам сделать функции ...
Цитата Сообщение от asdfghj Посмотреть сообщение
использовать наследование
Использовать наследование, не прибегая к классам? Интересно.

Цитата Сообщение от asdfghj Посмотреть сообщение
в зависимости от типа числа чтобы выбирались разные методы.
это называется "перегрузка функций", и она в С++ таки есть.
Цитата Сообщение от asdfghj Посмотреть сообщение
Add(a,b)
float
complex
num
float num
void numAdd
complex Num
float im
num Add
что это?

Не по теме:

Кто придумывает такие идиотские задания (или формулировки)?

0
asdfghj
0 / 0 / 1
Регистрация: 06.10.2011
Сообщений: 5
06.10.2011, 06:36  [ТС] #6
надо в одном примере сделать функции с одним названием, но разным исполнением в зависимости от числа.

во второй программе нужно использовать наследование и соответственно классы

Добавлено через 26 минут
эти две программы по идее и есть
Цитата Сообщение от Nameless One Посмотреть сообщение
ФП в С/С++
и ООП там же
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
06.10.2011, 06:43 #7
Цитата Сообщение от asdfghj Посмотреть сообщение
ФП в С/С++
это не функциональное программирование, а процедурное.
0
asdfghj
0 / 0 / 1
Регистрация: 06.10.2011
Сообщений: 5
06.10.2011, 07:40  [ТС] #8
Цитата Сообщение от Nameless One Посмотреть сообщение
это не функциональное программирование, а процедурное.
Цитата Сообщение от asdfghj Посмотреть сообщение
я не очень силен в программировании


задание дали такое...

Добавлено через 52 минуты
можете такие примеры написать?
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
06.10.2011, 07:49 #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
#include <iostream>
#include <cmath>
 
class complex
{
protected:
    double real;
 
private:
    double imag;        // производные классы не должны знать
                // о мнимой части
 
public:
    complex(double, double);
    complex(const complex&);
 
    complex operator + (const complex&) const;
 
    friend std::ostream& operator << (std::ostream&,
                      const complex&);
};
 
class floating: public complex
{
public:
    floating(double);
    floating(const floating&);
 
    floating operator + (const floating&) const;
 
    operator complex () const;
    
    friend std::ostream& operator << (std::ostream&,
                      const floating&);
};
 
complex operator + (const floating&, const complex&);
 
#define PRINT(EXP) std::cout << #EXP ": " << (EXP) << std::endl
 
int main()
{
    complex c1(2,3), c2(2, -3);
    floating f1(2), f2(-3);
 
    PRINT(c1);
    PRINT(c2);
    PRINT(f1);
    PRINT(f2);
    PRINT(c1 + c2);
    PRINT(f1 + f2);
 
    PRINT(f1 + c2);
    PRINT(c1 + f2);
    
    return 0;
}
 
complex::complex(double r, double i)
    : real(r), imag(i)
{
}
 
complex::complex(const complex& rhs)
    : real(rhs.real), imag(rhs.imag)
{
}
 
complex complex::operator + (const complex& rhs) const
{
    return complex(real + rhs.real, imag + rhs.imag);
}
 
std::ostream& operator << (std::ostream& os,
               const complex& rhs)
{
    bool minus = rhs.imag < 0;
 
    os << rhs.real;
 
    if(rhs.imag != 0)
    os << (minus ? " - " : " + ") << fabs(rhs.imag) << "i";
 
    return os;
}
 
floating::floating(double f)
    : complex(f, 0)
{
}
 
floating::floating(const floating& rhs)
    : complex(rhs.real, 0)
{
}
 
floating floating::operator + (const floating& rhs) const
{
    return floating(real + rhs.real);
}
 
floating::operator complex () const
{
    return complex(real, 0);
}
 
std::ostream& operator << (std::ostream& os,
               const floating& rhs)
{
    return (os << rhs.real);
}
 
complex operator + (const floating& f, const complex& c)
{
    return static_cast<const complex&>(f) + c;
}
Только на самом деле тут тоже происходит перегрузка
1
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.10.2011, 10:34 #10
Цитата Сообщение от asdfghj Посмотреть сообщение
не прибегая к классам сделать функции
Цитата Сообщение от asdfghj Посмотреть сообщение
использовать наследование.
Что-что, простите?
0
07.10.2011, 10:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2011, 10:34
Привет! Вот еще темы с решениями:

Разные ошибки в одной и той же программе с разными IDE
Добрый день. Столкнулся с проблемой. Начинал писать в Ubuntu используя...

Объединять классы и внешние функции в одной программе плохой тон программирования?
Доброго времени суток! Преподаватель в институте задал определённую задачу,...

Функция cin.get(array, 80) работает в одной программе, но не работает в другой
Добрый день. Я что то совсем запутался, одна и та же функция в одной...

Совмещение текстов
Здравствуйте, у меня есть класс строк и класс текст. надо 1 текст сложить с...


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

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

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