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

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

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

Студворк — интернет-сервис помощи студентам
Используя перегрузку функций, написать
программу определения знака переменных разного типа.
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.10.2013, 11:54
Ответы с готовыми решениями:

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

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

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

31
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
18.10.2013, 11:58
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
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:04  [ТС]
Спасибо, но можно ещё добавить комментарии к коду(//), чтобы я мог переиначить её на свой лад.
0
 Аватар для Folko
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
18.10.2013, 12:14
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
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:17  [ТС]
Ага... ладно, разберусь.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.10.2013, 12:18
Пишите сразу шаблонную
C++
1
2
3
4
5
template <class T>
int sign( T t )
{
    return t < 0 ? -1 : 1;
}
Петррр, в чем сакральный смысл использования signed char?
1
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:41  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Пишите сразу шаблонную
Спасибо, но не выйдет, у нас в лаб.аудиториях кастрированный С++, такой код он не принимает, только самое простое, типа этого:
C++
1
2
3
#include <iostream.h>
int s(int a, int b)
{return (a*b);}
Добавлено через 13 минут
Цитата Сообщение от Петррр Посмотреть сообщение
i >= 0 ? 1 : -1
Я правильно понимаю, что вместо этого, можно использовать if?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
18.10.2013, 12:46
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
Я правильно понимаю, что вместо этого, можно использовать if?
Да. Альтернатива if (.) {.} (тернарный оператор)
Code
1
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
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
Я правильно понимаю, что вместо этого, можно использовать if?
Можно.
C++
1
q ? a : b;
равносильно
C++
1
2
if( q ) a;
else b;
1
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 13:01  [ТС]
Так, хорошо...
ещё вопрос, этот код из сообщения 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
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2013, 13:04
Цитата Сообщение от 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
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 13:14  [ТС]
alsav22, отлично!
отшлифовал, вроде работает, только вопрос:
C++
1
2
3
cout<<a(3)<< endl;
cout<< b(4.5)<< endl;
}
Я знаю, что endl- переход в др. строку. А что значат (3), (4.5)?
У выдаёт дву единицы, в столбик, это удовлетворяет условию задачи?

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

Не по теме:

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



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

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

Добавлено через 2 минуты
И лучше возвращать булево значение (раз проверка на знак).
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.10.2013, 13:54
Цитата Сообщение от alsav22 Посмотреть сообщение
И лучше возвращать булево значение (раз проверка на знак).
в классическом (математическом) исполнении всё таки должно возвращаться три значения (-1,0,+1) для отрицательных, нуля и положительных чисел соответственно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.10.2013, 13:54
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru