|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » перегруженные шаблоны |
|
перегруженные шаблоны
|
papam
Сообщения: n/a |
Как написать перегруженные шаблоны функций для нахождения корней линейного (а*х + в = 0) и квадратного (а * (х*х) + в * х + с = 0) уравнений.
Замечание: в функции передаются коэффициенты уравнений. |
|
Отправлено: 12:36, 27-11-2005 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать А смысл писать шаблон? Перегрузной гораздо правильней получается.
// шаблон template<typename X> std::vector<X> polynom2_roots(X a X b, X c) { std::vector<X> result; X det = b*b - 4*a*c; if (X()<=det) { det = std::sqrt(det); result.push_back((det-b)/(a*2)); if (X()<det) { result.push_back((-det-b)/(a*2)); } } return result; } template<typename X> std::vector<std::complex<X> > polynom2_roots(std::complex<X> a std::complex<X> b, std::complex<X> c) { std::vector<std::complex<X> > result; X det = std::sqrt(b*b - 4*a*c); result.push_back((-b+det)/(a*2)); if (X()!=det) { result.push_back((-det-b)/(a*2)); } return result; } // При компиляции могут возникать неопределённости при выборе параметров шаблона. // Если убрать все template<...> и заменить X на double, мне кажется получится лучше. // Если задача стоит математическая (не сугубо прикладная), то использование std::complex<double> // просто идеально для машин P-4 Для выбора алгоритма, внутри можно добавить: Можно сделать так, чтобы выбор алгоритма выполнялся статически (тогда если вдруг по ходу выполнения программы окажется что a=0, будет всё равно решаться полное уравнение). [code] template<...> ... polynom2_roots(X c, X b, X a); // квадратичное template<...> ... polynom2_roots(X c, X b); // линейное [code] |
Последний раз редактировалось pva, 28-11-2005 в 11:44. Отправлено: 11:29, 28-11-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Шаблоны и исходники проекта | prokazzza | Проект WinStyle | 26 | 16-12-2009 23:39 | |
Административные шаблоны | Dr.FRECH | Microsoft Windows NT/2000/2003 | 0 | 18-10-2007 09:38 | |
MSFT SQL Server - Шаблоны отчетов | dzhserv | Программирование и базы данных | 1 | 04-09-2007 17:51 | |
Шаблоны | ivank | Вебмастеру | 12 | 06-06-2006 10:54 | |
Шаблоны сайтов.... | Guest | Вебмастеру | 2 | 25-05-2004 17:55 |
|