Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
213 / 139 / 8
Регистрация: 18.08.2010
Сообщений: 1,018

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

02.10.2011, 19:55. Показов 1452. Ответов 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...

Короче говоря, мне немного непонятна логика задачи и путь ее решения Вообще не представляю, где такое в практике будет надо. Но задачку нужно решить... Помогите пожалуйста разобраться.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2011, 19:55
Ответы с готовыми решениями:

Как узнать тип данных шаблона функции?
Я старался делать так: #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string&gt; using namespace...

Свой тип данных для перегрузки функций
Добрый день! Имеется широта и долгота - все FLOAT. Хочу сделать пару функций с одинаковым названием, но с разной реализацией для разных...

Функции для ввода/вывода массивов и матриц с помощью шаблонов и перегрузки
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; template&lt;class T&gt; int mass(T mas, T iSize = sizeof(mas) /...

1
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
02.10.2011, 20:46
Да, задача действительно тупая.
Думаю что-то вроде этого покатит
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 .
хотя врятли удивить получиться. т.к врятли он о нём знает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2011, 20:46
Помогаю со студенческими работами здесь

С помощью механизма перегрузки функций реализовать функции для вывода на экран
(17) С помощью механизма перегрузки функций реализовать функции для вывода на экран (первый параметр – тип выводимого значения ) ...

Проверить на тип вводимых данных
Опыта в программировании у меня нету,всего пару дней :) поэтому может вопрос и глупый, тем не менее: Вобщем простенькая функция с...

Как узнать тип производного класса в функции базового
Всем привет! Есть иерархия классов: class1 -&gt; class2-&gt;class3 class2-&gt;class4 class2-&gt;class5 Где...

Низкоуровневый ввод-вывод. Как с помощью функции write записать в файл тип int?
Работаю в Ubuntu.По заданию требуется использовать функции низкоуровневого ввода-вывода.Как с помощью функции write(fd,buf,bufsize)...

Должен ли хотя бы один из параметров оператора перегрузки был того же типа, что и тип, в котором этот оператор перегрузки определен
A) В зависимости от перегружаемой операции B) Нет C) Да D) В зависимости от типа, в котором объявлена операция перегрузки


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
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