Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

problem ze sprawdzaniem typu trójkąta o podanych bokach

Ostatnio zmodyfikowano 2011-12-01 17:35
Autor Wiadomość
jerryxyz
Temat założony przez niniejszego użytkownika
problem ze sprawdzaniem typu trójkąta o podanych bokach
» 2011-12-01 16:11:39
Witam.
Dopiero zaczynam uczyć się c++. Mam do napisania program, który po podaniu trzech boków ma sprawdzić czy da się z nich utworzyć trójkąt. Następnie sprawdzić jaki to będzie trójkąt (rozwartokątny, prostokątny czy ostrokątny), a także obliczyć jego pole.
Coś tam już napisałem ale nie wiem co dalej. Muszę użyć do tego funkcji enum a nie mam pojęcia jak to zrobić.
P-45033
pekfos
» 2011-12-01 16:21:22
enum to nie funkcja a typ wyliczeniowy
C/C++
enum Triangle {
    T_PRTOST,
    T_ROZW,
    T_OSTR
};

najpierw znajdź najdłuższy bok. jak masz to w tablicy to możesz też ją posortować.

jeżeli suma dwóch krótszych boków jest większa od najdłuższego to taki trójkąt istnieje. Jest prostokątny gdy równanie oparte na twierdzeniu Pitagorasa jest prawdziwe. Pozostałe typy są już proste. To podstawy matematyki!
P-45035
jerryxyz
Temat założony przez niniejszego użytkownika
» 2011-12-01 16:27:28
Tak wiem, że to typ wyliceniowy. Pomyliło mi się. Mniej wiecej coś takiego juz mam. A właściwie:

C/C++
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

enum RodzTr
{
    prost,
    ostr,
    rozwart,
};

bool BokMax( float a, float b, float c )
{
    float max;
    max = a;
    if( b > max ) max = b;
   
    if( c > max ) max = c;
   
    return max;
}

bool CzyBedzieTr( float a, float b, float c )
{
    float max, suma;
    max = BokMax( a, b, c );
    suma = a + b + c - max;
    return suma > max;
}

bool JakiTr( float a, float b, float c )
{
    float max, suma;
    max = BokMax( a, b, c );
    suma =( a * a + b * b + c * c - max * max );
    if( suma == max ) return prost;
   
    if( suma > max ) return ostr;
   
    if( suma < max ) return rozwart;
   
}

float PoleTr( float a, float b, float c )
{
    float p, s;
    p = 0.5 *( a + b + c );
    s = sqrt( p *( p - a ) *( p - b ) *( p - c ) );
    return s;
}

int main()
{
    cout << "Podaj dl. bokow trojkata:\n";
    float a, b, c;
    cout << "a = ";
    cin >> a;
    cout << "b = ";
    cin >> b;
    cout << "c = ";
    cin >> c;







chodzi o to jak dalej to zrobic?
P-45036
pekfos
» 2011-12-01 16:35:16
wywołaj funkcje.

C/C++
bool JakiTr( float a, float b, float c )
{
    float max, suma;
    max = BokMax( a, b, c );
    suma =( a * a + b * b + c * c - max * max );
    if( suma == max ) return prost;
   
    if( suma > max ) return ostr;
   
    if( suma < max ) return rozwart;
   
}

tu masz duży błąd. zwracaj wartość swojego typu wyliczeniowego a nie bool bo tracisz informacje.
P-45037
jerryxyz
Temat założony przez niniejszego użytkownika
» 2011-12-01 16:41:37
Jak pisałem na początku dopiero się uczę c++. Czy moglibyście dokładniej napisać co mam źle i jak to poprawić?
P-45039
pekfos
» 2011-12-01 16:43:49
piszesz z funkcjami nie znając ich? w przytoczonym przeze mnie fragmencie zmień bool na RodzTr.
P-45040
jerryxyz
Temat założony przez niniejszego użytkownika
» 2011-12-01 17:19:31
Wiem, że trochę przynudzam, ale nie potrafię ogarnąć tego programu przez użycie enuma, a był nakaz, żeby go zastosować. Jak mam zrobić, żeby mi wypisywało jaki trojkąt z podanych boków otrzymam? Czego użyć? If? Case?
P-45043
pekfos
» 2011-12-01 17:20:22
If lub case. Krócej będzie z case.
P-45044
« 1 » 2
  Strona 1 z 2 Następna strona