|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.04.2009, 23:33 | #1 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
перегруженные шаблоны функций и корни линейных уравнений
Господа, имеется такая задача:
Условие: Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений. Мой код: Код:
Заранее благодарен! Последний раз редактировалось MaTBeu; 03.04.2009 в 23:56. |
04.04.2009, 12:21 | #2 | |
Пользователь
Регистрация: 18.03.2009
Сообщений: 89
|
Цитата:
Зато возник другой вопрос: зачем везде написано B*(-1) ? Просто -B нельзя написать? P.S. Если A = 0, то капец |
|
04.04.2009, 12:45 | #3 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
а потом везьде опять B*(-1), а просто B используется только в B*B. Не проще ли эту первую строчку убить и никаких B*(-1) не нужно будет?) И еще смысл в шаблонной функции, если внутри всё равно используются переменные float? Получается ограничение, что результат T / T должен неявно уметь приводиться к float Последний раз редактировалось pu4koff; 04.04.2009 в 12:49. |
|
04.04.2009, 13:00 | #4 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
Но позвольте, господа, а как же всё таки праильно написать (я новичок ещё))?
|
04.04.2009, 13:01 | #5 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
|
04.04.2009, 13:12 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Вот это на int будет парвильно работать: float x=B/A? Округление до целого не произойдет при делении?
Кроме того возвращаем из функции тип T, пишем: return x; а x - это строго float. Если я захочу с типом double работать, то вернётся вероятно мне double, но точность вычисления значения то будет как у типа float. В данной задаче использование шаблонов притянуто за уши. Логичнее использовать простую перегрузку функций. Изначально определитесь какие типы должен Ваш шаблон поддерживать и что будет с Вашим кодом при разных параметрах шаблона. Еще D - это float. Забудьте для вещественных типов оператор ==. Нельзя писать D == 0. Нужно: модуль(D) < погрешности. Для погрешности должен быть макрос что-то вроде FLOAT_EPS или как-то так. Точно не помню. Используйте else if, а то к чему лишние проверки производить? И еще про саму "архитектуру" функции: выкиньте вы этот вывод в консоль. Представьте, что эту функцию захотите в оконном приложении использовать или изменить формат вывода на экран. А если бы стандартные функции тоже выводили на экран что-то? Вызываете в коде rand(), а в нагрузку выводится на экран что-то вроде: "Generated random value: 0.00005". Я думаю это бы Вам не понравилось Последний раз редактировалось pu4koff; 04.04.2009 в 13:21. |
08.04.2009, 18:54 | #7 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
pu4koff, пасиба огромное, но мы пока что тока в консоли и пишем. половину из того что вы в последнем посте сказали мне к сож пока ещё не оч понятно но я буду стараца понять. ещё раз пасип)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Решение системы линейных уравнений методом Гаусса. | maliyusha | Помощь студентам | 16 | 18.02.2013 15:44 |
паскаль система линейных уравнений | student77rus | Помощь студентам | 1 | 19.11.2008 21:48 |