KillerBee Posted February 17, 2011 Report Share Posted February 17, 2011 Mam problem z zadanie na spoju, ponieważ napisałem program, który mi działa, ale oczywiście spoj znajduje jakieś błędy i wywala błąd odpowiedzi. Treść zadania: Dla długości boków a, b i c wypisz rodzaj trójkąta. Wejście Nieznana liczba testów. Każdy z nich składa się z trzech liczb: a, b i c (wszystkie < 10000). Wyjście Jedno słowo określające rodzaj trójkąta ("prostokatny", "rozwartokatny", "ostrokatny") lub "brak", jeśli taki trójkąt nie istnieje. Przykład Wejście: 1 1 10 3 4 5 2 3 4 7 7 7 Wyjście: brak prostokatny rozwartokatny ostrokatny Kod #include <cstdlib> #include <iostream> using namespace std; int typ_trojkata(int c, int a, int b); int main() { int a, b, c, x; cin>>a; cin>>b; cin>>c; if((a==0)||(b==0)||(c==0)) x=0; else if((a<b+c)&&(b<a+c)&&(c<a+b)) { if((a>c)&&(a>b)) { x=typ_trojkata(a, b, c); } if((b>c)&&(b>a)) { x=typ_trojkata(b, a, c); } if((c>a)&&(c>b)) { x=typ_trojkata(c, a, b); } } else x=0; switch (x){ case 0: cout<<"brak"<<endl; break; case 1: cout<<"prostokatny"<<endl; break; case 2: cout<<"rozwartokatny"<<endl; break; case 3: cout<<"ostrokatny"<<endl; break; default:cout<<"ostrokatny"<<endl; } } int typ_trojkata(int c, int a, int b) { int wynik; wynik = c*c; if(wynik==((a*a)+(b*b))) return (1); if(wynik>((a*a)+(b*b))) return (2); if(wynik<((a*a)+(b*b))) return (3); } Proszę o Pomoc. Link to comment Share on other sites More sharing options...
[Ekspert] Hakken Posted February 17, 2011 Report Share Posted February 17, 2011 Po pierwsze: Nie widzę tu pętli dzięki której będziesz czytał dane do upadłego. Sposób na to jest bardzo prosty: while(cin>>a>>b>>c), i potem wywalasz cin-y z petli. Po drugie: Źle porównujesz liczby. Nie przewidujesz tu przypadku, w którym każda liczba jest taka sama. W tym przypadku rozwiązanie problemu jest równie proste - zamiast pisać if((c>a)&&(c>b)) napisz: if((c>=a)&&(c>=b)) i tak samo w pozostalych dwóch przypadkach. I rada od Hakkena: jak zagnieżdżasz pętle czy warunki, rób wcięcia. (chociaż możliwe, że forum zjadło formatowanie) Link to comment Share on other sites More sharing options...
KillerBee Posted February 17, 2011 Author Report Share Posted February 17, 2011 bardzo dziękuje za pomoc. wszystko działa Link to comment Share on other sites More sharing options...