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

Перегруженные функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
novak
2 / 2 / 0
Регистрация: 14.04.2011
Сообщений: 141
07.11.2011, 22:13     Перегруженные функции #1
Подскажите, плиз, с заданием.
Задание у меня такое:
написать перегруженную функцию для расчета:
y=|sin x|-|cos x|

Написал я прогу на основе найденного одного листинга:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
using namespace std;
 
double func(double x)
{
    return (fabs(sin(x)) - fabs(cos(x)));
}
 
int main()
{
    SetConsoleOutputCP(1251);
    double x;
    cout << "Введите x" << endl;
    cin >> x;
    cout << "y = " << func(x) << endl;
 
    return 0;
}
Решается все правильно, но является ли это перегруженной функцией или нет? Вот в чем вопрос.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2011, 22:13     Перегруженные функции
Посмотрите здесь:

Перегруженные функции. C++
перегруженные функции C++
C++ Перегруженные функции
Перегруженные функции C++
C++ Перегруженные функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.11.2011, 22:20     Перегруженные функции #2
А вы знаете, что такое перегруженная функция? В общих чертах хотя бы?
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
07.11.2011, 22:25     Перегруженные функции #3
Ну и перегрузите например так
C++
1
2
3
4
int func(int x)
{
    return (fabs(sin((double)x)) - fabs(cos((double)x)));
}
Хотя правда толку будет немного)
novak
2 / 2 / 0
Регистрация: 14.04.2011
Сообщений: 141
07.11.2011, 22:26  [ТС]     Перегруженные функции #4
В общих чертах, конечно. И судя по примеру из учебника, нужно применять классы.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.11.2011, 22:28     Перегруженные функции #5
Цитата Сообщение от novak Посмотреть сообщение
нужно применять классы.
Совершенно необязательно. Ради интереса можете глянуть здесь.
novak
2 / 2 / 0
Регистрация: 14.04.2011
Сообщений: 141
07.11.2011, 22:39  [ТС]     Перегруженные функции #6
Вообще-то полностью у меня задание: написать две перегруженные функции для расчета( вышеуказанная функция и еще одна (в обеих применяются одни и те же переменные)).
Наверное при написании обеих функций они и будут являться перегруженными. Я правильно понимаю?

Добавлено через 6 минут
То есть напр, перегруженные функции будут выглядеть так:
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
 
double func(double a, double b, double x)
{
    return a+b*cos(x);
}
 
double func(double);
 
int main()
{
    double a, b, x;
    cout << "Введите a, b, x" << endl;
    cin >> a >> b >> x;
    cout << "y(x) = " << func(x) << endl;
    cout << "y(a, b, x) = " << func(a, b, x) << endl;
    return 0;
}
 
double func(double x)
{
    return (fabs(sin(x)) - fabs(cos(x)));
}
Я правильно понимаю?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.11.2011, 22:43     Перегруженные функции #7
Перегруженные функции должны отличаться не телом, а количеством аргументов. Соответственно, если вы напишете 2 функции, которые принимают только X и возвращают к примеру только double, даже если их тела будут различны, то компилятор "не поймет" какую из двух функций вызывать. Поэтому и извращаться в таком случае не вижу смысла.
Приведите вторую функцию, которая дана в задании, может и получится уцепиться за что-нибуть. В крайнем случае всегда можно воспользоваться static_cast<T> и перегрузить функцию для float и double. Или int. Или любого другого типа. Но, повторюсь, особого смыла от этого не будет. Перегрузка функций должна упрощать программу, но не усложнять.

Добавлено через 19 секунд
Да, все верно.
novak
2 / 2 / 0
Регистрация: 14.04.2011
Сообщений: 141
07.11.2011, 22:52  [ТС]     Перегруженные функции #8
Цитата Сообщение от soon Посмотреть сообщение
Приведите вторую функцию, которая дана в задании, может и получится уцепиться за что-нибуть.
Вторая функция: y=a+b*cos x
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.11.2011, 22:53     Перегруженные функции #9
Вы все верно перегрузили.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2011, 22:56     Перегруженные функции
Еще ссылки по теме:

Перегруженные функции C++
C++ перегруженные функции
C++ Перегруженные функции

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

Или воспользуйтесь поиском по форуму:
novak
2 / 2 / 0
Регистрация: 14.04.2011
Сообщений: 141
07.11.2011, 22:56  [ТС]     Перегруженные функции #10
Большое спасибо. В особенности за то, что из ваших комментариев я теперь окончательно понял для чего служат перегруженные функции!
Yandex
Объявления
07.11.2011, 22:56     Перегруженные функции
Ответ Создать тему
Опции темы

Текущее время: 18:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru