Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2013, 17:15   #1
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию Перегруженые функции

Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений.

вот код


Код:
#include<iostream>
#include<math.h>
using namespace std;

void urav(int a,int b){
cout<<(-b)/a<<'\n';//(a*x + b = 0)
}
void urav(float a,float  b,float  c){
float d;
d=b*b-4*a*c;
cout<<(-b+sqrt(d))/2*a<<'\t';
cout<<(-b-sqrt(d))/2*a<<'\n';
}	
void main(){
urav(2,6);
urav(9,4,2);
}
но во второй функции где-то ошибка подскажите плиз????????????????
mixon-21 вне форума Ответить с цитированием
Старый 26.04.2013, 17:22   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Я бы сказал, и в первой функции ошибка (вызовите её с аргументами (2,5) и удивитесь результату).
А по поводу второй функции - это выражение без скобок:
Код:
x/y*z
...будет считаться вот так:
Код:
(x/y)*z
То есть, приоритет у умножения и деления одинаковый, а вычисляются они слева направо...
Ну, это не считая того, что Вы не стали проверять дискриминант на положительность.
Abstraction вне форума Ответить с цитированием
Старый 26.04.2013, 17:34   #3
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

А так правильно????????????????


Код:
#include<iostream>
#include<math.h>
using namespace std;

void urav(float a,float b){
cout<<(-b)/a<<'\n';//(a*x + b = 0)
}
void urav(float a,float  b,float  c){
float d;
//(a*x2+b*x + c = 0)
d=b*b-4*a*c;
if(d>=0){
cout<<(-b+sqrt(d))/(2*a)<<'\t';
cout<<(-b-sqrt(d))/(2*a)<<'\n';
}
}	
void main(){
urav(2,8);
urav(2,6,4);
}
mixon-21 вне форума Ответить с цитированием
Старый 26.04.2013, 17:34   #4
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Цитата:
????????????????
Орать тут не надо! Какой язык?
hon вне форума Ответить с цитированием
Старый 26.04.2013, 17:37   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Наверное.
При d=0 программа выведет два одинаковых значения. Если с этим проблем нет и в обоих случаях гарантируется, что a!=0, то вроде всё нормально.

Upd: И если в задании было про просто перегруженные функции. Перегруженные шаблоны функций - это что-то не то. Вы уверены, что в задании было это слово?

Последний раз редактировалось Abstraction; 26.04.2013 в 17:39.
Abstraction вне форума Ответить с цитированием
Старый 26.04.2013, 17:37   #6
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Язык си++!
СПАСИБО

Вот задание:"Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений. "

Последний раз редактировалось Stilet; 26.04.2013 в 19:39.
mixon-21 вне форума Ответить с цитированием
Старый 26.04.2013, 19:24   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,342
По умолчанию

Цитата:
Сообщение от mixon-21 Посмотреть сообщение
Язык си!
СПАСИБО
Если си, то не может быть и разговора о перегрузке, и уж тем более о шаблонах.
Не путайте си и с++ - это разные языки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 26.04.2013 в 19:45.
BDA на форуме Ответить с цитированием
Старый 26.04.2013, 22:49   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений.
Не понимаю. Шаблон функции - это (чуть упрощая, да) решение ситуации, когда к разным типам и/или целочисленным константам применяется одна и та же логика, которую не хочется дублировать.
Код:
//Функция обмена местами целых чисел
void swap(int& a, int& b){
  int tmp = a;
  a = b;
  b = tmp;
}

//Функция обмена местами вещественных чисел
void swap(float& a, float& b){
  float tmp = a;
  a = b;
  b = tmp;
}

//Функция обмена местами указателей на double
void swap(double*& a, double*& b){
  double* tmp = a;
  a = b;
  b = tmp;
}

//Ещё 100500 таких функций
Можно заменить на
Код:
template <typename T>
void swap(T& a, T& b){
  T tmp = a;
  a = b;
  b = tmp;
}
В данном коде я не вижу даже пары функций, отличающихся только типами и имеющих идентичную логику. Основания для применения шаблона нет и близко.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование подпрограммы-функции: Вычислить значение функции (Турбо паскаль) RealUnited Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2012 20:34
Построение графика функции, мигание(затухание) шарика в минимумах функции kas1m_rus Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2012 20:28
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Программа на СИ++, используя функции работы с файлами и функции <string.h> Аня Popova Фриланс 9 13.09.2010 15:52