[c++]problem z funkcją

chudy1993

Użytkownik
Dołączył
Luty 24, 2007
Posty
174
Mam taki kodzik:
Kod:
#include <windows.h>

#include <math.h>

#include <iostream>



double pitagoras(double a,double b);

int APIENTRY WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow)

    {

             double a,b,c;

             double pitagoras(double a,double b);

                    {

                            double c;

                            c=sqrt(a*a+b*b);

                            return c;

                    }

             cout<<"Podaj 3 boki trojkatan";

             cin>>a;

             cin>>b;

             cin>>c;

             if (a+b>c) && (a+c>b) && (b+c>a)

                {

                        cout<<"mozna ulozyc trojkatn";

                        if (a=b) || (a=c) || (b=c)

                           {

                                 cout<<"trojkat rownoramiennyn";

                                 if (a=b) && (a=c) && (b=c)

                                    cout<<"trojkat rownoboczny";

                           }

                        else

                            cout<<"trojkat roznobocznyn";

                        if (a=pitagoras(b,c)) || (b=pitagoras(a,c)) || (c=pitagoras(a,b))

                           cout<<"trojkat prostokatnyn";

                }

             else

                 cout<<"nie mozna ulozyc trojkatan";

             system("pause");

             return 0;

    }
Kiedy próbuje to skompilować wywala mi taki błąd:
[Warning] conwerting to int from double[/b]
Dotyczy to fragmentu:
Kod:
             double pitagoras(double a,double b);

                    {

                            double c;

                            c=sqrt(a*a+b*b);

                            return c;

                    }
Nie wiem czemu ta funkcja próbuje skonwertować wynik do integer'a, pomimo, że zwraca wartosc double. Jeśli ktoś może mi pomóc, to byłbym bardzo wdzięczny.
 

grzonu

Były Moderator
Dołączył
Grudzień 26, 2006
Posty
1390
dlatego ze sqrt zwraca watrosc typu int
 

eloar

Użytkownik
Dołączył
Listopad 28, 2006
Posty
58
sqrt zwraca typ double. Przeciez pierwiastek nie czesto jest liczba calkowita. Moze tylko przyjmowac rozny typ argumentu, ale zwraca double.

Jesli jednak sie myle, to musisz po prostu jawnie zrzutowac do typu double na przyklad poprzez:
Kod:
c=(double)sqrt(a*a+b*b);
albo
Kod:
c=double(sqrt(a*a+b*b));
Obie konstrukcje sa rownowazne.
 
Do góry Bottom