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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
novak
2 / 2 / 0
Регистрация: 14.04.2011
Сообщений: 141
#1

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

07.11.2011, 22:13. Просмотров 1269. Ответов 9
Метки нет (Все метки)

Подскажите, плиз, с заданием.
Задание у меня такое:
написать перегруженную функцию для расчета:
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;
}
Решается все правильно, но является ли это перегруженной функцией или нет? Вот в чем вопрос.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.11.2011, 22:20     Перегруженные функции #2
А вы знаете, что такое перегруженная функция? В общих чертах хотя бы?
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
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
2537 / 1302 / 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
2537 / 1302 / 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
2537 / 1302 / 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++ Используя перегруженные функции и шаблон функции удалить из массива элемент по индексу
Перегруженные функции C++
Перегруженные функции C++

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

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

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