Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> полиморфный ввод 
:(
    Опции темы
nvb
Дата 10.4.2012, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



Программа, если поступает значение, заносит его в стек, если управляющий символ - вызывает функции.
подскажите, как лучше полиморфизм реализовать, что бы в зависимости от типа данных вызывались разыные функции?писть switch или if else не хотелось бы.есть смысл здесь делать полиморфный класс?
PM MAIL   Вверх
mes
Дата 10.4.2012, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



не очень понял задачу, но вот на скорую руку накалякал, может поможет :
http://liveworkspace.org/code/52bac8fe4ba6...ac668be89ebe761


--------------------
PM MAIL WWW   Вверх
nvb
Дата 10.4.2012, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



ну здесь, как я понял, циклы и перебо значений, с целью проверить что у нас на входе. а я говорил о функции или шаблоне, которая в зависимости от того, что на входе -int,float или char вызывает соответсвующий метод. как-то  наверно с помошью шаблонов и специализаций должно делаться, просто определенно не могу понять как.
PM MAIL   Вверх
mes
Дата 10.4.2012, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(nvb @  10.4.2012,  13:40 Найти цитируемый пост)
что у нас на входе. 

на входе в каком виде у вас ? если типизированное значение, то чем не устраивает простая прегрузка ?!

Добавлено через 1 минуту и 37 секунд
Цитата(nvb @  10.4.2012,  13:40 Найти цитируемый пост)
 как я понял, циклы и перебо значений, с

нет, цикл для генереации значений на входе, а выбор происходет благодаря карте соответсвий.. т.е. просто переход, никакого перебора..

Добавлено через 2 минуты и 53 секунды
Цитата(nvb @  10.4.2012,  13:40 Найти цитируемый пост)
 просто определенно не могу понять как. 

прежде чем понять "как", надо определиться с "что есть" и "что получить"



--------------------
PM MAIL WWW   Вверх
nvb
Дата 10.4.2012, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



значения стандартных типов на входе. перегрузка чего? перегрузить оператор тут не пулучится видимо:

istream & operator >> (istream & s, somedata & data)

тип данных скажем float data при вводе 'a' получим 0, насколько я понимаю. и анализ возращаемого значения тут не сделать. 

если просто некую функцию read перегружать, то вводимое значение нужно сперва кудато сохранить, что бы в функцию передать, а тип ее заранее не известен.

прошу прощения, несколько смутно излагаю.)
PM MAIL   Вверх
borisbn
Дата 10.4.2012, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



http://liveworkspace.org/code/a03df1a7f871...6e8caa8b8a5c526

но можно и через шаблоны... лучше поточнее объясни задачу. лучше целиком, а не отрывками


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
nvb
Дата 10.4.2012, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



алгоритм такой примерно:

ввод

  если int или float - значение в соответствующий стек

  если управляющий символ - соответсвующее действие- завершение программы, печать, вызов функции и пр.

повторяем ввод 

так вот еще раз сформулирую вопрос: как такой ввод лучще оформить, при том, что неизвестно, введет оператор символ или числовое значение? я думал как это сделать полиморфно и не придумал)
PM MAIL   Вверх
mes
Дата 10.4.2012, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(nvb @  10.4.2012,  13:56 Найти цитируемый пост)
значения стандартных типов на входе. 

Цитата(nvb @  10.4.2012,  13:56 Найти цитируемый пост)
тип данных скажем float data при вводе 'a' получим 0, насколько я понимаю.

почитайте что есть поток данных.. без этого вам трудно будет даже самомусебе разъяснить, чего Вы хотите.. 
в потоке нет никаких типизированных данных, это всего лишь массив байтов, и поэтому разделять значения по их типу (за его отсустсвием)  не получится..




--------------------
PM MAIL WWW   Вверх
nvb
Дата 10.4.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



mes, я понимаю, я поэтому и написал, что нужно тогда вспомогательную переменную вводить, но тогда какого типа - непонятно
PM MAIL   Вверх
mes
Дата 10.4.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



в принципе вариантов чтения с потока всего 2 , 
1. согласованный.. когда вы точно знаете что сейчас в потоке и это читаете
2. вариантный.. когда читаете вариант (в нашем случае строку) и по внешнему виду определяете что с ним делать.. 





--------------------
PM MAIL WWW   Вверх
borisbn
Дата 10.4.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



nvb, если я тебя правильно понял, то тебе нужно получить из стандартного ввода строку, а затем уже понять, к чему эту строку можно преобразовать - к int, float или любой другой char.
Если так, то тебе ни полиморфизм, ни шаблоны не помогут, т.к. входной тип один - строка. Прийдётся проверять на возможность приведения к каждому типу по-очереди.

Добавлено через 6 минут и 45 секунд
nvb, если это - не задание в институте, то посмотри на другие языки (python, php и т.п.). Там такой проблемы нет. почти...


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
nvb
Дата 10.4.2012, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 31.1.2012

Репутация: нет
Всего: нет



вот я об этом как раз: т.е. все-таки через строку делать? некак с помощью полиморфизма не сделть? 

borisbn, не,  но написать надо на с... интерпретируемые да, проще конечно
PM MAIL   Вверх
mes
Дата 10.4.2012, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(nvb @  10.4.2012,  14:25 Найти цитируемый пост)
 некак с помощью полиморфизма не сделть? 

чтоб сработал полиморфизм, нужен тип, а его нет, есть только набор сырых данных.. 
если б среди данных были бы управляющие команды, можно было бы опереться на них.. 
в общем без точки опоры, рычаг приложить не к чему smile



--------------------
PM MAIL WWW   Вверх
Albor
Дата 10.4.2012, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 2
Всего: 9



Задача очень похожа на калькулятор, описываемый Стауструпом.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.