Informatică, întrebare adresată de CornelRadu, 8 ani în urmă

Se dau 3 numere: A B C

Cerință: Să se afișeze în ordine crescatoare.

Restrictii: numerele se încadrează în timpul de date int.

Mai jos este rezolvarea mea însă iau 79 /100 puncte și nu înțeleg de ce...

===============================


#include <iostream>

using namespace std;

int main()
{
int a, b, c;
cin>>a>>b>>c;
if(a<=b && b<=c)
cout<<a<<" "<<b<<" "<<c;
else if(a<=b && c<=b)
cout<<a<<" "<<c<<" "<<b;
else if(b<=a && a<=c)
cout<<b<<" "<<a<<" "<<c;
else if(b<=c && c<=a)
cout<<b<<" "<<c<<" "<<a;
else if(c<=a && a<=b)
cout<<c<<" "<<a<<" "<<b;
else if(c<=a && b<=a)
cout<<c<<" "<<b<<" "<<a;
else if(a==b && b==a && b==a && b==c && c==b)
cout<<a<<" "<<b<<" "<<c;

return 0;
}​


danboghiu66: Nu am stat sa verific codul, dar mi.a atras atentia ultimul if: else if(a==b && b==a && b==a && b==c && c==b). Asta e belea rau de tot. Verifici a==b. Perfect. Apoi de 2 ori b==a. Pentru siguranta? Daca a==b atunci si b==a. Apoi b==c si c==b. La fel, daca b==c atunci si c==b.
danboghiu66: Codul nu va merge cum trebuie pentru toate valorile a,b,c. De exemplu, a=5, b=10, c=2. Deoarece b este cel mai mare, ai (a mai mic ca b) si (c mai mic ca b). Astfel intri pe primul 'else if' si tiparesti a,c,b, adica 5,2,10. Ar fi trebuit 2,5,10.

Răspunsuri la întrebare

Răspuns de simulink
0

Răspuns:

cred ca este din cauza ca daca dai 2 nr egale din cele 3, vor fi macar 2 cazuri in care se verifica conditiile tale si o sa iti afiseze mai multe chestii. Copiaza codul in CodeBlock sau un compilator online etc. si da mai multe triplete de nr sa vezi ce iti afiseaza.

Ex: 4 5 4

sau 5 5 5

Explicație:

Ai putea face asa:

if(a==b &&a < c) cout<<a<<" "<<b<<" " <<c;

if(a==b && a>c) cout<<c<<" "<<a<<" "<<b;

if(a==c && a<b) cout<<a<<" "<<c<<" "<<b;

if(a==c && a>b) cout<<b<<" "<<a<<" "<<c;

if(b==c && a<b) cout<<a<<" "<<b<<" "<<c;

if(b==c && a>b) cout<<b<<" "<<c<<" "<<a;

if (a==b&&a==c) cout<<a<<" "<<b<<" "<<c;

if(a<b && a<c)

if (b<c) cout<<a<<" "<<b<<" "<<c;

else cout<<a<<" "<<c<<" "<<b;

if(c<a && c<b)

if (a<b) cout<<c<<" "<<a<<" "<<b;

else cout<<c<<" "<<b<<" "<<a;

if(b<a && b<c)

if (a<c) cout<<b<<" "<<a<<" "<<c;

else cout<<b<<" "<<c<<" "<<a;

Alte întrebări interesante