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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
#1

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

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

Используя перегрузку функций, написать
программу определения знака переменных разного типа.
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2013, 11:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перезагрузка функции (C++):

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

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

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

перезагрузка >> - C++
Учусь по книге Дейтела. Дошел до перезагрузки >> и <<. И мне интересно зачем в этом примере ignore(); Может кто-то объяснить зачем он в...

Перезагрузка - C++
Здравствуйте! Получил вот такую лабу по перезагрузке. Класс: Множество целых чисел. Поля: Количество элементов в множестве, указатель...

Перезагрузка функций - C++
Нужна помощь, написать программу по теме перезагрузка функций, помогите пожалуйста. Условие: Написать программу, содержащую функцию для...

31
Петррр
5973 / 3410 / 337
Регистрация: 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
Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:04  [ТС] #3
Спасибо, но можно ещё добавить комментарии к коду(//), чтобы я мог переиначить её на свой лад.
0
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 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
Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 12:17  [ТС] #5
Ага... ладно, разберусь.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
Vlad_fractal
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
SatanaXIII
Супер-модератор
Эксперт С++
5643 / 2678 / 252
Регистрация: 01.11.2011
Сообщений: 6,574
Завершенные тесты: 1
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
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
18.10.2013, 12:46 #9
Цитата Сообщение от 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  [ТС] #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
alsav22
5428 / 4823 / 442
Регистрация: 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
Vlad_fractal
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
SatanaXIII
Супер-модератор
Эксперт С++
5643 / 2678 / 252
Регистрация: 01.11.2011
Сообщений: 6,574
Завершенные тесты: 1
18.10.2013, 13:14 #13

Не по теме:

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



Цитата Сообщение от Vlad_fractal Посмотреть сообщение
А что значат (3), (4.5)?
Это числа: три и четыре с половиной, передающиеся в соответствующие функции.
1
Vlad_fractal
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
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2013, 13:24 #15
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
И тогда, вроде, всё идеально, по условию.
Всё, как раз, неправильно тогда.
0
18.10.2013, 13:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 13:24
Привет! Вот еще темы с ответами:

Перезагрузка операций - C++
Всем привет, есть такая задача. Создать класс - дата с полями в закрытой части: день (1-31), месяц (1-12), год (целое число). Определить...

Перезагрузка операторов! - C++
Добрый вечер, умные люди, помогите пожалуйста сделать программу нужно реализовать класс абстрактного типа данных АДТ − стек....

Перезагрузка функций - C++
1 С помощью механизма перегрузки функций реализовать функции для нахождения суммы: 1) 2-х чисел; 2) 2-х строк; 3) строки и числа; ...

Перезагрузка компа - C++
Какие команды нужно забить в С++ чтобы по истечении какого то либо времени комп перезагружался=) ?


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

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

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