[C++] Problem z kompilacją funkcji

Hej, to znowu ja. dzisiaj poczytalem o switch i chciałem napisac program z wykorzystaniem tego, ale dev c++ daje mi jakieś blędy, których nie umiem naprawic.

chyba porwałem sie z motyką na słoce, ale… jeszcze do końca nie wiem jak powinien wygladac ten kod, chciałe sprawdzić po kompilacji i ew. poprawić, no ale jak mi się nie kompiluje…

//obliczanie obwodu i pola prostokata

#include

#include


int Obwod ( int nDlugosc1, int nDlugosc2)//funkcja liczaca obwod prostokata

{

    return 2*(nDlugosc1 + nDlugosc2);

}


int Pole ( int nDlugosc1, int nDlugosc2)//funkcja liczaca pole prostokata

{

    return nDlugosc1*nDlugosc2 ;

}


int Polet //funkcja liczaca pole trojkata

{

    return (nDlugosc1*ndlugosc2)/2 ;

}    


int Polek //funkcja liczaca pole kola

{

      return(nDlugosc1*nDlugosc1)*3.14 ;

}


int Obwodk//funkcja liczaca obwod kola

{

      return 2*(3.14*nDlugosc1) ;

}      


int main()

{   

    int nWybor;

    std::cout << (" Wybierz figure, ktorej pole i obwod chcesz policzyc ") <
    std::cout << (" 1.Prostokat ") << std::endl;

    std::cout << (" 2.Trojkat ") << std::endl;

    std::cout << (" 3. Kolo ") << std::endl;

    std::cin >> nWybor;


     int nWartosc1;

    std::cout << (" Wprowadz dlugosc pierwszego boku(musi to byc liczba calkowita).Dla trojkata wprowadz podstawe. ") << std::endl;

    std::cin >> nWartosc1;


    int nWartosc2;

    std::cout << (" Wprowadz dlugosc drugiego boku rowniez w liczbie calkowitej. Dla trojkata wprowadz wysokosc. ") << std::endl;

    std::cin >> nWartosc2;



    switch (nWybor)

    {

           case 1: std::cout << (" Obwod prostokata to ") << Obwod(nWartosc1, nWartosc2) << std::endl;

           std::cout << (" Pole prostokata to ") << Pole(nWartosc1, nWartosc2) << std::endl; break;


           case 2: std::cout << (" Niestety dla trojkata umiem policzyc tylko pole. Pole trojkata to ") << Polet(nWartosc1, nWartosc2)<<

           std::endl; break;


           case 3: std::cout << (" Pole kola to ") << Polek(nWartosc1) << (".") <<

           ("Obwod kola to ") << Obwodk(nWartosc1) << (".") << std::endl; break;

           }           


    getch();

}

Po sprawdzeniu swoich funkcji i przerobieniu na inta (wynik floata i inta to float), będzie się kompilować i dostaniesz coś a’la to:

//obliczanie obwodu i pola prostokata

Dzieki Wielkie! !!

Dodane 05.12.2010 (N) 10:41

Znowu mam problem. Poza tym, że nie dałem float i wyniki są całkowite(ale to łatwo zrobić), do policzenia pola i obwodu koła jest potrzebny tylko promień, a program pyta o 2 parametry. Użułem więc if i else, ale teraz dla każdej figury pyta o promien koła #-o

//obliczanie obwodu i pola prostokata

#include

#include


int Obwod ( int nDlugosc1, int nDlugosc2)//funkcja liczaca obwod prostokata

{

    return 2*(nDlugosc1 + nDlugosc2);

}


int Pole ( int nDlugosc1, int nDlugosc2)//funkcja liczaca pole prostokata

{

    return nDlugosc1*nDlugosc2 ;

}


int Polet ( int nDlugosc1, int nDlugosc2) //funkcja liczaca pole trojkata

{

    return (nDlugosc1*nDlugosc2)/2 ;

}    


int Polek ( int nDlugosc1) //funkcja liczaca pole kola

{

      return int((nDlugosc1*nDlugosc1)*3.14) ;

}


int Obwodk ( int nDlugosc1)//funkcja liczaca obwod kola

{

      return 2*(int(3.14*nDlugosc1)) ;

}      


int main()

{   

    int nWybor;

    std::cout ("Wybierz figure, ktorej pole i obwod chcesz policzyc ") 
    std::cout ("1.Prostokat ") std::endl;

    std::cout ("2.Trojkat ") std::endl;

    std::cout ("3. Kolo ") std::endl;

    std::cin nWybor;


    int nWartosc1;

    int nWartosc2;

    if(nWybor=3)

    {

                std::cout ("wprowadz promien kola") 
                std::cin nWartosc1;

    }

    else

    {


    int nWartosc1;

    std::cout ("Wprowadz dlugosc pierwszego boku(musi to byc liczba calkowita.)")
    std::cin nWartosc1;


   int nWartosc2;

    std::cout ("Wprowadz dlugosc drugiego boku rowniez w liczbie calkowitej.")
    std::cin nWartosc2;

    }


    switch (nWybor)

    {

           case 1: std::cout ("Obwod prostokata to ") Obwod(nWartosc1, nWartosc2) std::endl;

           std::cout ("Pole prostokata to ") Pole(nWartosc1, nWartosc2) std::endl; break;


           case 2: std::cout ("Niestety dla trojkata umiem policzyc tylko") 
             Polet(nWartosc1, nWartosc2)

           std::endl; break;


           case 3: std::cout ("Pole kola to ") Polek(nWartosc1) (".") 

           std::endl("Obwod kola to ") Obwodk(nWartosc1) (".") std::endl; break;

           }           


    getch();

}

Tak a propos, obwód trójkąta:

nDlugosc1+nDlugosc2+sqrt(nDlugosc1*nDlugosc1+nDlugosc2*nDlugosc2);

Oczywiście o ile to trójkąt prostokątny, jeżeli zaś to nie jest trójkąt prostokątny to pole policzyłeś niepoprawnie.

jeżeli się mogę wtrącić nie łatwiej dopisać na początku

using namespace std;

? Nie musisz potem tak się rozdrabniać przy tak prostym programie.

Przy IF musisz mieć ==

inaczej przypisuje, a nie sprawdza warunku

szalus94 , proszę zapoznaj się z tą stroną oraz tym tematem, a następnie popraw tytuł tematu, używając przycisku ac7a4cd89050aa6e.gif

Dzieki, zapomniałem o tym podwójnym znaku.

Edit: kurka przedtem wszystko oprócz tego koła działałi a teraz nie działa nic oprócz niego. Dla prostokąta i trójkata wychodza wyniki z kosmosu.

Nie mam ochoty przedzierać się przez twoje nagromadzenie funkcji. Jest to mało czytelne. A skoro chcesz się nauczyć switcha to tylko jego użyłbym to tego zadania. W każdym bądź razie ja bym to zrobił na ten kształt, zamiast walić nonsensowne ify itd.

#includeusing namespace std;int co;float dana1,dana2,dana3;int main()    "Wybierz figure 1-kolo, 2-prostokat, 3-trojkat"  endl;  cin  co;switch (co)