Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
1

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

18.10.2013, 11:54. Показов 3437. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Используя перегрузку функций, написать
программу определения знака переменных разного типа.
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2013, 11:54
Ответы с готовыми решениями:

Переопределение или перезагрузка функции
у меня есть класс комплексных чисел. И как можно определить функцию sqrt() что бы она работала с...

Перезагрузка операций и функции в С++
у меня есть лаба по перезагрузке. Строка символов. Реализовать операции: сравнение строк...

Специализации шаблона функции или перезагрузка
Доброго времени суток. Собственно, мою проблему можно увидеть в коде: #include <iostream>...

перезагрузка буфферизованой функции
Имеется файл index.php, в нём есть код $log=''; // Обнуляем переменную function...

31
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
18.10.2013, 11:58 2
C++
1
2
3
4
5
6
7
8
9
10
11
signed char sign(int i)
{
    return i >= 0 ? 1 : -1;
}
 
signed char sign(double d)
{
    return d >= 0 ? 1 : -1;
}
 
// etc
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:04  [ТС] 3
Спасибо, но можно ещё добавить комментарии к коду(//), чтобы я мог переиначить её на свой лад.
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
18.10.2013, 12:14 4
Vlad_fractal, какие комментарии? Просто объявляются 2 функции с одинаковыми именами и разными входными параметрами. В строке return проверяется, положительное или отрицательное число, и возвращается либо 1 либо -1. При вызове функции программа определяет нужный вариант функции

C++
1
2
3
4
5
6
7
8
9
signed char sign(int i) // входной параметр типа int
{
    return i >= 0 ? 1 : -1; // проверка и возвращение результата
}
 
signed char sign(double d) // входной параметр типа double
{
    return d >= 0 ? 1 : -1; // проверка и возвращение результата
}
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:17  [ТС] 5
Ага... ладно, разберусь.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.10.2013, 12:18 6
Пишите сразу шаблонную
C++
1
2
3
4
5
template <class T>
int sign( T t )
{
    return t < 0 ? -1 : 1;
}
Петррр, в чем сакральный смысл использования signed char?
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:41  [ТС] 7
Цитата Сообщение от Tulosba Посмотреть сообщение
Пишите сразу шаблонную
Спасибо, но не выйдет, у нас в лаб.аудиториях кастрированный С++, такой код он не принимает, только самое простое, типа этого:
C++
1
2
3
#include <iostream.h>
int s(int a, int b)
{return (a*b);}
Добавлено через 13 минут
Цитата Сообщение от Петррр Посмотреть сообщение
i >= 0 ? 1 : -1
Я правильно понимаю, что вместо этого, можно использовать if?
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
18.10.2013, 12:46 8
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
Я правильно понимаю, что вместо этого, можно использовать if?
Да. Альтернатива if (.) {.} (тернарный оператор)
Код
i >= 0 ? 1 : -1
C++
1
2
3
4
if(i >= 0)
  return  1;
else 
  return -1;
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.10.2013, 12:46 9
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
Я правильно понимаю, что вместо этого, можно использовать if?
Можно.
C++
1
q ? a : b;
равносильно
C++
1
2
if( q ) a;
else b;
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 13:01  [ТС] 10
Так, хорошо...
ещё вопрос, этот код из сообщения 2 целый, там main не нужен?

Добавлено через 10 минут
Короче вот, что я намутил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int a(int i)
{
if(i>=0)
return  1;
else 
return -1;
}
float b(float j)
{
if(j>= 0)
return  1;
else 
return -1;
}
выдаёт ошибку, связанную с main. Куда его нужно впихнуть?
Помогите, пожалуйста, бедному гуманитарию получить автомат и забыть всё это, наконец, как страшный сон!
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2013, 13:04 11
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
там main не нужен?
main() всегда нужен.

Добавлено через 3 минуты
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int a(int i)
{
    if(i>=0)
    return  1;
    else 
    return -1;
}
 
float b(float j)
{
    if(j>= 0)
    return  1;
    else 
    return -1;
}
 
int main()
{
    cout << a(3) << endl;
    cout << b(4.5) << endl;
 
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 13:14  [ТС] 12
alsav22, отлично!
отшлифовал, вроде работает, только вопрос:
C++
1
2
3
cout<<a(3)<< endl;
cout<< b(4.5)<< endl;
}
Я знаю, что endl- переход в др. строку. А что значат (3), (4.5)?
У выдаёт дву единицы, в столбик, это удовлетворяет условию задачи?

Добавлено через 4 минуты
А-а-а-а! Всё, всё! Я всё понял, там целочисленный и вещественный. Короче ясно, можно ещё ввод от руки сделать. Ну всё, спасибо всем, пойду получать автомат.
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
18.10.2013, 13:14 13

Не по теме:

Цитата Сообщение от Vlad_fractal Посмотреть сообщение
отшлифовал, вроде работает
А то у alsav22 вечно код какой-то угловатый. :jokingly:



Цитата Сообщение от Vlad_fractal Посмотреть сообщение
А что значат (3), (4.5)?
Это числа: три и четыре с половиной, передающиеся в соответствующие функции.
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 13:19  [ТС] 14
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Это числа: три и четыре с половиной, передающиеся в соответствующие функции.
Да, там ещё в этом фрагменте:
C++
1
2
3
4
if(j>= 0)
 return  j*1; //вместо просто 1
 else 
 return j*(-1);
И тогда, вроде, всё идеально, по условию. Вообщем, посмотрим, что препод скажет.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2013, 13:24 15
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
И тогда, вроде, всё идеально, по условию.
Всё, как раз, неправильно тогда.
0
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 13:27  [ТС] 16
Цитата Сообщение от alsav22 Посмотреть сообщение
Всё, как раз, неправильно тогда.
Уже понял...
Так, при компиляции выдаёт две цифры в столбик. Не зависимо от знака, выдаёт положительные числа. Препод сказал переделывать, окей.
Как правильно написать? Тот вариант с единицами был верный?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2013, 13:32 17
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
Тот вариант с единицами был верный?
В общем, да.

Добавлено через 3 минуты
Добавьте только обработку возвращаемого функциями результата:
C++
1
if (a(n) == 1) cout << "Число положительное" << endl;
и т.д.
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 13:34  [ТС] 18
Добавлено через 50 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
Добавьте только обработку возвращаемого функциями результата:
Ага, понял, спасибо.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2013, 13:46 19
А теперь главное: тут нет перегрузки функций. Функции должны быть с одним именем.

Добавлено через 2 минуты
И лучше возвращать булево значение (раз проверка на знак).
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.10.2013, 13:54 20
Цитата Сообщение от alsav22 Посмотреть сообщение
И лучше возвращать булево значение (раз проверка на знак).
в классическом (математическом) исполнении всё таки должно возвращаться три значения (-1,0,+1) для отрицательных, нуля и положительных чисел соответственно.
1
18.10.2013, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2013, 13:54
Помогаю со студенческими работами здесь

Реализовать функции "ждущий режим" и "перезагрузка"
Доброе времени суток. Пишу программу для выключения компьютера. Работает нормально только...

Перезагрузка
Вот такой у меня вопрос. На проце нет кнопки перезагрузки ( т.к. пошли новые коробки без...

Перезагрузка ПК
Всем привет. Летом я создавал тему о том, что в нагрузке перезагружается ПК, мне посоветовали...

Перезагрузка ПК
Доброе время суток. Довольно давно началась небольшая проблема: компьютер перезагружается во время...

перезагрузка >>
Учусь по книге Дейтела. Дошел до перезагрузки &gt;&gt; и &lt;&lt;. И мне интересно зачем в этом примере...

Перезагрузка пк
Добрый день.Конфигурация м.п.гигабайт z77 ud5,8gb,ssd240,1 тб,gtx 690,hunt key x7 900w,выключается...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru