![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
![]()
Господа, имеется такая задача:
Условие: Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений. Мой код: Код:
Заранее благодарен! Последний раз редактировалось MaTBeu; 03.04.2009 в 23:56. |
![]() |
![]() |
![]() |
#2 | |
Пользователь
Регистрация: 18.03.2009
Сообщений: 89
|
![]() Цитата:
Зато возник другой вопрос: зачем везде написано B*(-1) ? Просто -B нельзя написать? ![]() P.S. Если A = 0, то капец ![]() |
|
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,103
|
![]() Цитата:
а потом везьде опять B*(-1), а просто B используется только в B*B. Не проще ли эту первую строчку убить и никаких B*(-1) не нужно будет?) И еще смысл в шаблонной функции, если внутри всё равно используются переменные float? Получается ограничение, что результат T / T должен неявно уметь приводиться к float Последний раз редактировалось pu4koff; 04.04.2009 в 12:49. |
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
![]()
Но позвольте, господа, а как же всё таки праильно написать (я новичок ещё))?
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,103
|
![]()
Вот это на 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. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 25.03.2009
Сообщений: 20
|
![]()
pu4koff, пасиба огромное, но мы пока что тока в консоли и пишем. половину из того что вы в последнем посте сказали мне к сож пока ещё не оч понятно но я буду стараца понять. ещё раз пасип)
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Решение системы линейных уравнений методом Гаусса. | maliyusha | Помощь студентам | 16 | 18.02.2013 15:44 |
паскаль система линейных уравнений | student77rus | Помощь студентам | 1 | 19.11.2008 21:48 |