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

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

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

Короче говоря, мне немного непонятна логика задачи и путь ее решения Вообще не представляю, где такое в практике будет надо. Но задачку нужно решить... Помогите пожалуйста разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 19:55     Как узнать тип вводимых данных с помощью перегрузки функции?
Посмотрите здесь:

C++ Проверить на тип вводимых данных
Объясните пожалуйста, как узнать тип ОС C++
C++ Как на блок-схеме обойтись без вводимых данных?
C++ С помощью механизма перегрузки функций реализовать функции для вывода на экран
C++ С помощью механизма перегрузки функций реализовать функции для нахождения максималь-ного значения
Низкоуровневый ввод-вывод. Как с помощью функции write записать в файл тип int? C++
Как узнать тип производного класса в функции базового C++
Выполнить объединение двух строк с помощью перегрузки оператора (*) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
02.10.2011, 20:46     Как узнать тип вводимых данных с помощью перегрузки функции? #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
27
28
29
30
void showType(char c) {
    std::cout << "char.\n";
}
 
void showType(int c) {
    std::cout << "int.\n";
}
 
void showType(double c) {
    std::cout << "double.\n";
}
 
int main() {
 
    int i;
    double d;
    char c;
 
    std::cin >> i;
    showType(i);
 
    std::cin >> c;
    showType(c);
    
    std::cin >> d;
    showType(d);
 
    getch();
    return 0;
}
цель ведь изучить перегрузку , а не прикладная задача.

Ведь в качестве параметра функции нужно передавать переменную, а не cin, где я пытаюсь сделать ввод с клавы прямо в функцию (смешно звучит...).
вы возможно удивитесь, но cin - это именно переменная( объект) типа std::istream и при большом желании её тоже можно прочитать ) но к теме это не относится.

и да, если хотите удивить препода можете втереть ему про typeid http://en.wikipedia.org/wiki/Typeid .
хотя врятли удивить получиться. т.к врятли он о нём знает.
Yandex
Объявления
02.10.2011, 20:46     Как узнать тип вводимых данных с помощью перегрузки функции?
Ответ Создать тему
Опции темы

Текущее время: 21:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru