Informatică, întrebare adresată de negrualb, 9 ani în urmă

Cerința
Se citesc trei numere reale de la tastatură. Să se verifice dacă formează laturile unui triunghi isoscel.

Date de intrare
Programul citește de la tastatură trei numere a b c.

Date de ieșire
Programul va afișa pe ecran unul din următoarele mesaje: Formeaza triunghi isoscel – în cazul în care triunghiul este isoscel; Nu formeaza triunghi isoscel – în cazul în care triunghiul este echilateral sau oarecare; Nu formeaza triunghi – în cazul în care numerele nu pot fi laturile unui triunghi.

Restricții și precizări
triunghiul echilateral nu este considerat isoscel
laturile triunghiului oarecare sunt distincte două câte două

Exemplu
Intrare

5 7.5 5
Ieșire

Formeaza triunghi isoscel
Explicație
numerele 5, 7.5 și 5 formează laturile unui triunghi isoscel.

Răspunsuri la întrebare

Răspuns de Emil1234
5
# include<iostream>
using namespace std;
int main()
{   
float a,b,c,cosA,cosB,cosC;
   
int OK = 0;
   
cin>>a>>b>>c;
   
if(!(a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a))
                cout<<"Nu formeaza triunghi";
   
else
   
      {
       
                cosA=(b*b+c*c-a*a)/(2*b*c);
       
                cosB=(a*a+c*c-b*b)/(2*a*c);
       
                cosC=(a*a+b*b-c*c)/(2*a*b);
       
                if(cosA>0 && cosB>0 && cosC>0) OK = 1;
       
                if(!OK)
       
                      cout<<"Nu formeaza triunghi isoscel";
       
                else{
       
                      if((a==b && b!=c && cosA==cosB) || (a==c && a!=b && cosA==cosC) || (b==c && b!=a && cosB==cosC))
       
                                 cout<<"Formeaza triunghi isoscel";
       
                      else
       
                                 cout<<"Nu formeaza triunghi isoscel";
       
                }
   
       }
       
return 0;
}

negrualb: 90n puncte
Emil1234: dami si mie testele sa ma pot verifica, si daca e modific raspunsul :)
negrualb: Exemplu Intrare 5 7.5 5 Ieșire Formeaza triunghi isoscel Explicație numerele 5, 7.5 și 5 formează laturile unui triunghi isoscel.
negrualb: 5 7.5 5
negrualb: triunghi isoscel
negrualb: asta este exemplu
Emil1234: Ok, nu mai ma lasa sa editez, dar iti zic ce trebuie sa modifici pentru a rezolva problema corect. Din else stergi primul if si al doilea, i. Il pastrezi doar pe al treilea care va trebui sa arate asa:
Emil1234: if((a==b && b!=c && cosA==cosB && cosA>0) || (a==c && a!=b && cosA==cosC && cosA>0) || (b==c && b!=a && cosB==cosC && cosB>0))
Emil1234: Daca e adevarat, atunci formeaza triunghi isoscel, altfel nu :)
Alte întrebări interesante