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

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

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

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

23.11.2012, 21:28. Просмотров 398. Ответов 2
Метки нет (Все метки)

Создайте функцию 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):"
Пробовал опускать функции и вызвать по одной. Такая же каша.
Объясните пожалуйста, как реализовать данную задачу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 21:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка функции (C++):

Перегрузка в виде метода VS Перегрузка в виде функции друг - C++
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций - C++
Добрый день. Дана лабораторная работа, (см. ниже 2 скриншота) по заданию нужно вычислить функции с использованием их разложения в степенной...

Дружественные функции. Наследование. Перегрузка функции - C++
Здравствуйте, у меня проблема Не знаю куда Вставить имеющийся код(В какую строчку или строчки кода). Первый код это было 1 задание, 2-ой...

Перегрузка операторной функции и функции ! - C++
3.16Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника....

Перегрузка функции - C++
Помогите плз сделать лабораторную по программированию Задание такое: Класс «матрица». Матрица имеет размер 3х3 и содержит...

Перегрузка функции - C++
Доброго времени суток Допустим, есть перегруженная функция void func(long f, long g, int q){cout&lt;&lt;&quot;1&quot;;} void func(long f, int g,...

2
DU
1484 / 1130 / 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"); это не чары, а указатели на чары. чары в одинарных кавычках.
0
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2012, 13:01
Привет! Вот еще темы с ответами:

перегрузка функции - C++
Функція func повертає позицію першого входження шуканого числа чи символу. Добавлено через 42 секунды помогите с кодом)Официальный...

перегрузка функции - C++
Функція func повертає позицію першого входження шуканого числа чи символу.ПОДСКАЖИТЕ КАК ЗАМУТИТЬ

Перегрузка функции - C++
Добрый день. Не могу решить до конца задачу. Суть в том что бы передать значения в функцию, сделать с ними что то и вернуть значение....

Перегрузка функции - C++
Помогите решить проблему. Нужно,например,создать перегрузку функции для сложения 2 чисел для 2 разных типов данных. Если числа уже...


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

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

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