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

Перегрузка функции - C++

Восстановить пароль Регистрация
 
imminence
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3
23.11.2012, 21:28     Перегрузка функции #1
Создайте функцию max(), которая возвращает наибольший из трёх численных аргументов, используемых при вызове функции. Перегрузите функцию max() так, чтобы она воспринимала в качестве аргументов символы, целые и действительные двойной точности.

В общем, не знаю как правильно это решить, но наброски есть.

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
#include <iostream>
 
using namespace std;
 
int max(int a,int b,int c)
 {
  if((a>b)&&(a>c))
   return a;
  else if((b>a)&&(b>c))
   return b;
  else if((c>a)&&(c>b)) 
   return c;
 }
double max(double a,double b,double c)
 {
  if((a>b)&&(a>c))
   return a;
  else if((b>a)&&(b>c))
   return b;
  else if((c>a)&&(c>b)) 
   return c;
 } 
 
char max(char a,char b,char c)
 {
  if((a>b)&&(a>c))
   return a;
  else if((b>a)&&(b>c))
   return b;
  else if((c>a)&&(c>b)) 
   return c;
 } 
 
int main() 
 {
  cout<<max(1,2,3);
  cout<<max((double)1,(double)2,(double)3);
  cout<<max("a","b","c");
  return 0;
 }
Вот в общем, как-то так, я просто не знаю как правильно это сделать, либо в классе объявить эти функции либо без класса. Не знаю.
Работаю в компиляторе MinGw, ошибку даёт такую "in function int max(int, int, int):"
Пробовал опускать функции и вызвать по одной. Такая же каша.
Объясните пожалуйста, как реализовать данную задачу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 21:28     Перегрузка функции
Посмотрите здесь:

Перегрузка функции C++
C++ Перегрузка функции в С++
перегрузка функции C++
перегрузка функции C++
Перегрузка операторной функции и функции ! C++
Перегрузка функции C++
Перегрузка функции C++
C++ Дружественные функции. Наследование. Перегрузка функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.11.2012, 21:47     Перегрузка функции #2
"in function int max(int, int, int):"
и самое полезное конечно же не написали.
что за ошибка то? может что-нибудь типа не все ветки возвращают значение. пофиг. в целом перегрузка примерно так и делается. но все выглядит проще, если сделать для удобвства еще и функцию, которая принимает два аргумента. чтобы не копипастить, сделал шаблон, но можно и не шаблон, а для каждого типа написать функцию для двух аргументов. трехаргументную функцию тоже можно сделать шаблоном. тогда все будет еще проще, но это не по тз. так же к именам добавлена циферка по количеству аргументов, чтобы имена не конфликтовали друг с другом и с тем, что есть в стандарте или в макросах.

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
#include <iostream>
 
using namespace std;
 
template <typename T>
T max2(T a, T b)
{
  return a < b ? b : a;
}
 
int max3(int a, int b, int c)
{
  return max2(max2(a, b), c);
}
 
double max3(double a, double b, double c)
{
  return max2(max2(a, b), c);
} 
 
char max3(char a, char b, char c)
{
  return max2(max2(a, b), c);
} 
 
int main() 
{
  cout<< max3(1, 2, 3) << endl;
  cout<< max3(1., 2., 3.) << endl;
  cout<< max3('a', 'b', 'c') << endl;
  return 0;
}
и еще ошибка:
max("a","b","c"); это не чары, а указатели на чары. чары в одинарных кавычках.
imminence
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3
24.11.2012, 13:01  [ТС]     Перегрузка функции #3
Насчёт кавычек да, извиняюсь, только что заметил.
DU, спасибо большое, всё доступно и понятно.
Честно сказать я видел похожий код, искал, но я не понял в тот момент для чего это:

C++
1
2
3
4
5
template <typename T>
T max2(T a, T b)
{
  return a < b ? b : a;
}
Yandex
Объявления
24.11.2012, 13:01     Перегрузка функции
Ответ Создать тему
Опции темы

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