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

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

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

На вход подается число (int или float) в зависимости от его типа провернуть над ним разные операции - C++

13.03.2014, 18:20. Просмотров 985. Ответов 20
Метки нет (Все метки)

Шаблоны функций (template)
Суть: на вход подается число (int или float) в зависимости от его типа провернуть над ним разные операции.
Собственно, не задалось самое начало, не могу понять, как через template получить со входа неизвестный тип переменной
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос На вход подается число (int или float) в зависимости от его типа провернуть над ним разные операции (C++):

Перевести массив цифр в число типа int или float - C++
Всем здрасти , а не подскажет ли кто часом, можно ли массив с цифрой в каждом злементе (a=1, a=3, a=7, a=n и.т.д) перевести в число типа...

Как число типа 2.88007e+018 привести в обычный int, float или просто вывести - C++
Тестирующая система говорит "Неправильный формат вывода". Программа считает числа фиббоначи, по формуле Бине (дается только n, найти...

Дано натуральное число. Произвести операции над его цифрами. - C++
Помогите решить задачи через цикл do _ while: 3) Дано натуральное число. Определить: а) количество цифр 3 в нем; б) сколько...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

Как проверить вводилось ли число (типа double или float) в консоль - C++
Как проверить вводилось ли число (типа double или float) в консоль?

В зависимости от знака операции (+ или -) выполнить действия над двумя матрицами - Free Pascal
13.В зависимости от знака операции (+ или -) выполнить действия над двумя матрицами.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
13.03.2014, 18:44 #2
Так?

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
#include <iostream>
using namespace std;
 
template <typename T>
void S(T &a);
 
int main() {
 
    int a = 3;
    float b = 5.54;
 
    S(a);
    cout << endl;
    S(b);
 
    cin.get();
    return 0;
}
 
template <typename T>
void S(T &a) {
    cout << "Plus = " << a + a << endl;
    cout << "Minus = " << a - a << endl;
    cout << "Proiz = " << a * a << endl;
    cout << "Div = " << a / a << endl;
}
0
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
13.03.2014, 18:49 #3
Обязательно надо темплейт? Можно перегрузить функции для переменных разных типов
0
unpapaicoconaut
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 11
13.03.2014, 19:00  [ТС] #4
Цитата Сообщение от recoder Посмотреть сообщение
Так?
нет, числа попадают с консоли std::cin

Добавлено через 25 секунд
Цитата Сообщение от saden Посмотреть сообщение
Обязательно надо темплейт?
желательно, но, если покажешь пример, я против не буду)
0
kylroma
Одессит
200 / 71 / 22
Регистрация: 30.12.2013
Сообщений: 259
Записей в блоге: 1
Завершенные тесты: 1
13.03.2014, 20:23 #5
Можно принимать числа в char. Проверять, есть ли точка. А потом в зависимости от наличия точки переводить в int или float.
0
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
13.03.2014, 20:29 #6
Так?

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
#include <iostream>
using namespace std;
 
template <typename T>
void S(T &a);
 
int main() {
 
    int a;
    float b;
    std::cout << "Int: ";
    std::cin >> a;
    S(a);
    std::cout << std::endl;
    std::cout << "Float: ";
    std::cin >> b;
    S(b);
 
    cin.get();
    cin.get();
    return 0;
}
 
template <typename T>
void S(T &a) {
    cout << "Plus = " << a + a << endl;
    cout << "Minus = " << a - a << endl;
    cout << "Proiz = " << a * a << endl;
    cout << "Div = " << a / a << endl;
}
1
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
13.03.2014, 20:42 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void do_smth(int x)
{
...
}
 
void do_smth(float x)
{
...
}
 
main()
{
...
cin>>x;
do_smth(x);
...
}
0
unpapaicoconaut
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 11
13.03.2014, 20:59  [ТС] #8
Цитата Сообщение от recoder Посмотреть сообщение
Так?
нет, вся суть в том, что я получаю только ОДНО число и я не могу заранее сказать, введите integer или float
0
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
13.03.2014, 21:00 #9
как вариант - проверка на целое
C++
1
if(x==floor(x))
1
unpapaicoconaut
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 11
13.03.2014, 21:01  [ТС] #10
saden, в мэйне то придется тип х объявить, чтобы его ввести
0
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
13.03.2014, 21:05 #11
Цитата Сообщение от unpapaicoconaut Посмотреть сообщение
saden, в мэйне то придется тип х объявить, чтобы его ввести
согласен, сразу не подумал...
смотри второй вариант

Добавлено через 2 минуты
кстати, а как число получаецца? Тоже ж надо что-то объявить
0
unpapaicoconaut
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 11
13.03.2014, 21:08  [ТС] #12
я вот и пытался через шаблон сделать, чтобы оно сразу принимало подходящий тип, но не удалось
0
saden
183 / 167 / 41
Регистрация: 27.01.2013
Сообщений: 788
13.03.2014, 21:10 #13
а сравнение
C++
1
x==floor(x)
тоже не подходит?
1
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
13.03.2014, 21:36 #14
Что за бред, это не язык с динамической типизацией. Хотя rtti могло бы помочь.
0
unpapaicoconaut
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 11
13.03.2014, 21:43  [ТС] #15
Цитата Сообщение от saden Посмотреть сообщение
а сравнение
с ним можно попробовать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 21:43
Привет! Вот еще темы с ответами:

Trunc() и Abs() (На вход программе подается вещественное число Х. Получить и вывести на экран целое значение Z) - Free Pascal
На вход программе подается вещественное число Х. Получить и вывести на экран целое значение Z: Z = -1, если Х&lt;0; Z = 1, если Х&gt;0; Z...

Перевод строки, содержащей число типа float, в число float - C (СИ)
Помогите разобраться, как строку, к примеру &quot;0.123&quot; перевести в переменную типа float...

Почему диапазон значений у типа float больше, чем у типа int, если они оба занимают 4 байта? - C++
Почему диапазон значений флоат больше чем у инта, если они оба занимают 4 байта? Вроде слышал что-то связанное с мантисой, но как это...

Задано число. Разместите в памяти последовательно все его цифры, используя указатели и операции над ними - C++
Задано натуральное число. Разместите в памяти последовательно все его цифры, используя указатели и операции над ними. Может кто помочь в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.03.2014, 21:43
Ответ Создать тему
Опции темы

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