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

Как узнать тип вводимых данных с помощью перегрузки функции? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шифр Альберти http://www.cyberforum.ru/cpp-beginners/thread359524.html
Нужен исходник шифрующий некоторое сообщение по шифру Альберти. Есть ли у кого-нибудь такой? В инете искал, ничего подходящего не нашел (.
C++ Не правильно выводит значение (if, else) Неправильно выводит Плату за стоянку, помогите с условием #include "stdafx.h" #include<iostream> using namespace std; double calcCharges(double x) { double charge; if ( x <= 3 ) http://www.cyberforum.ru/cpp-beginners/thread359500.html
Веб-браузер C++
Решил написать веб-браузер но, знания о C++ слишком малы. помогите мне надо для своей ОС.
C++ Небольшое исправление (2)
Собственно нужно при нажатии кнопки " ' " нужно вывести на экран содержимое первого окна в новом окне с кнопкой ОК. Сама кнопка работает, только не выводит текста, выводит ошибку преобразования string в char. Прошу помощи. #include <windows.h> #include <string> using namespace std; LRESULT CALLBACK WindowProcedure (HWND,UINT,WPARAM,LPARAM); char szClassName ="Мой класс оконный"; int...
C++ Очень нужно объяснение http://www.cyberforum.ru/cpp-beginners/thread359471.html
в универе дали вот такую функцию y=exp(-0.1*X)-{-}^2-cos(4*X)^4 надо написать код чтобы visual c++ могла подсчитать эту функцию Объясните пожалуйста как)))
C++ Разобрать код простых чисел через массивы to idetify if the given K is prime or not. Prime number is the number that can be divided by 1 and by itself ONLY. If given number is prime output "YES",otherwise ouput "NO". Input: Only one line with n number.(1<=N=<1000) Output: Only one line with "YES" or "NO". Sample input 1: 4 подробнее

Показать сообщение отдельно
Tolias28
202 / 117 / 2
Регистрация: 18.08.2010
Сообщений: 1,006
02.10.2011, 19:55     Как узнать тип вводимых данных с помощью перегрузки функции?
Такое условие задачки: Пользователь вводит данные, а ему программа говорит, какой тип этих данных. Нужно сделать это с помощью перегрузки функций на C++.

Я пока додумался, как сие сделать путем конвертирования одного типа в другой, и если переменная после конвертации "туда-сюда" осталась неизменной, значит это ее тип. Вот что-то наподобие этого:
C++
1
2
3
4
5
6
7
8
9
10
11
char string[128];
cin >> string;
 
if(!strcmp(itoa(atoi(string)), string))
{
    cout << "type is int" << endl;
}else if(!strcmp(ftoa(atof(string)), string))
{
    cout << "type is float" << endl;
}
// и так далее по всех типах...
Но нужно сделать подобное с помощью перегрузок функций. Но только как... Я думаю, что приблизительно вот так, как в следующем куске кода, но он нерабочий..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ShowType(int value)
{
    cout << "type is int" << endl;
}
 
ShowType(float value)
{
    cout << "type is float" << endl;
}
// и так далее...
 
int main()
{
    cout << " Enter any value: " << endl;
    cout << ShowType(cin) << endl;
    cin.get();
    return 0;
}
Но, естественно, что ничего не получается... Ведь в качестве параметра функции нужно передавать переменную, а не cin, где я пытаюсь сделать ввод с клавы прямо в функцию (смешно звучит...). Но если так, то как мне передать значение в функцию ShowType? Ведь если сделаю вот так:

C++
1
2
3
char *value;
cin  >> value;
ShowType(value);
то смысл весь с программы теряется, так как уже и так известно, что функция ShowType возвратит тип массив char...

Короче говоря, мне немного непонятна логика задачи и путь ее решения Вообще не представляю, где такое в практике будет надо. Но задачку нужно решить... Помогите пожалуйста разобраться.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru