C++: If anidados, error lógico

Cerrado
Message postés
1
Date d'inscription
domingo, 4 de septiembre de 2016
Estatus
Miembro
Última intervención
domingo, 4 de septiembre de 2016
-
Hola, me pidieron hacer un programa que ordene 4 números de forma descendente utilizando forzosamente if de forma anidada, Es decir, DEBO condicionar las 24 posibilidades , mi código es el siguiente:
#include <cstdlib>
#include <iostream>

using namespace std;
void ordenar1();
int main(int argc, char *argv[])
{
ordenar1();
system("PAUSE");
return EXIT_SUCCESS;
}
void ordenar1()
{
//Declarando 4 enteros
int e1,e2,e3,e4;
cout<<"\n Implementando el METODO 1"<<endl;
//Pidiendo cuatro numeros
cout<<"Introduce el primer entero: ";//Pedir el primer entero al usuario
cin>>e1;//Leyendo entero1
cout<<"Introduce el segundo entero: ";//Pedir el segundo entero al usuario
cin>>e2;//Leyendo entero2
cout<<"Introduce el tercer entero: ";//Pedir el tercer entero al usuario
cin>>e3;//Leyendo entero3
cout<<"Introduce el cuarto entero: ";//Pedir el cuarto entero al usuario
cin>>e4;//Leyendo entero3
//Buscando al entero mayor primera etapa
int emayorp4,emayorp3,emayorp2,emayorp1;
if(e1>e2 && e1>e3 && e1>e4 ) //casos donde el mayor es e1
if(e2>e3 && e2>e4)
if(e3>e4)
emayorp4=e1;
emayorp3=e2;
emayorp2=e3;
emayorp1=e4;

if(e1>e2 && e1>e3 && e1>e4 )
if(e3>e2 && e3>e4)
if(e2>e4)
emayorp4=e1;
emayorp3=e3;
emayorp2=e2;
emayorp1=e4;

if(e1>e2 && e1>e3 && e1>e4 )
if(e2>e3 && e2>e4)
if(e4>e3)
emayorp4=e1;
emayorp3=e2;
emayorp2=e4;
emayorp1=e3;

if(e1>e2 && e1>e3 && e1>e4 )
if(e3>e2 && e3>e4)
if(e4>e2)
emayorp4=e1;
emayorp3=e3;
emayorp2=e4;
emayorp1=e2;

if(e1>e2 && e1>e3 && e1>e4 )
if(e4>e3 && e4>e2)
if(e2>e3)
emayorp4=e1;
emayorp3=e4;
emayorp2=e2;
emayorp1=e3;

if(e1>e2 && e1>e3 && e1>e4 )
if(e4>e3 && e4>e2)
if(e3>e2)
emayorp4=e1;
emayorp3=e4;
emayorp2=e3;
emayorp1=e2;


if(e2>e1 && e2>e3 && e2>e4 ) //casos donde el mayor es e2
if(e3>e4 && e3>e1)
if(e4>e1)
emayorp4=e2;
emayorp3=e3;
emayorp2=e4;
emayorp1=e1;

if(e2>e1 && e2>e3 && e2>e4 )
if(e3>e4 && e3>e1)
if(e1>e4)
emayorp4=e2;
emayorp3=e3;
emayorp2=e1;
emayorp1=e4;

if(e2>e1 && e2>e3 && e2>e4 )
if(e1>e3 && e1>e4)
if(e3>e4)
emayorp4=e2;
emayorp3=e1;
emayorp2=e3;
emayorp1=e4;

if(e2>e1 && e2>e3 && e2>e4 )
if(e1>e3 && e1>e4)
if(e4>e3)
emayorp4=e2;
emayorp3=e1;
emayorp2=e4;
emayorp1=e3;

if(e2>e1 && e2>e3 && e2>e4 )
if(e4>e1 && e4>e3)
if(e1>e3)
emayorp4=e2;
emayorp3=e4;
emayorp2=e1;
emayorp1=e3;

if(e2>e1 && e2>e3 && e2>e4 )
if(e4>e3 && e4>e1)
if(e3>e1)
emayorp4=e2;
emayorp3=e4;
emayorp2=e3;
emayorp1=e1;

if(e3>e4 && e3>e1 && e3>e2 ) //casos donde el mayor es e3
if(e4>e1 && e4>e2)
if(e1>e2)
emayorp4=e3;
emayorp3=e4;
emayorp2=e1;
emayorp1=e2;

if(e3>e4 && e3>e1 && e3>e2 )
if(e4>e1 && e4>e2)
if(e2>e1)
emayorp4=e3;
emayorp3=e4;
emayorp2=e2;
emayorp1=e1;

if(e3>e4 && e3>e1 && e3>e2 )
if(e1>e4 && e1>e2)
if(e4>e2)
emayorp4=e3;
emayorp3=e1;
emayorp2=e4;
emayorp1=e2;

if(e3>e4 && e3>e1 && e3>e2 )
if(e1>e4 && e1>e2)
if(e2>e4)
emayorp4=e3;
emayorp3=e1;
emayorp2=e2;
emayorp1=e4;

if(e3>e4 && e3>e1 && e3>e2 )
if(e2>e1 && e2>e4)
if(e1>e4)
emayorp4=e3;
emayorp3=e2;
emayorp2=e1;
emayorp1=e4;

if(e3>e4 && e3>e1 && e3>e2 )
if(e2>e1 && e2>e4)
if(e4>e1)
emayorp4=e3;
emayorp3=e2;
emayorp2=e4;
emayorp1=e1;

if(e4>e1 && e4>e2 && e4>e3 ) //Casos donde el mayor es e4
if(e1>e2 && e1>e3)
if(e2>e3)
emayorp4=e4;
emayorp3=e1;
emayorp2=e2;
emayorp1=e3;

if(e4>e1 && e4>e2 && e4>e3 )
if(e1>e2 && e1>e3)
if(e3>e2)
emayorp4=e4;
emayorp3=e1;
emayorp2=e3;
emayorp1=e2;

if(e4>e1 && e4>e2 && e4>e3 )
if(e2>e1 && e2>e3)
if(e1>e3)
emayorp4=e4;
emayorp3=e2;
emayorp2=e1;
emayorp1=e3;

if(e4>e1 && e4>e2 && e4>e3 )
if(e2>e1 && e2>e3)
if(e3>e1)
emayorp4=e4;
emayorp3=e2;
emayorp2=e3;
emayorp1=e1;

if(e4>e1 && e4>e2 && e4>e3 )
if(e3>e2 && e3>e1)
if(e2>e1)
emayorp4=e4;
emayorp3=e3;
emayorp2=e2;
emayorp1=e1;

if(e4>e1 && e4>e2 && e4>e3 )
if(e3>e2 && e3>e1)
if(e1>e2)
emayorp4=e4;
emayorp3=e3;
emayorp2=e1;
emayorp1=e2;

if(e1!=e2 && e2!=e3 && e3!=e4 && e4!=e1)
{
cout<<"Los numeros en orden descendente son: "<<endl;
cout<<emayorp4<<endl;
cout<<emayorp3<<endl;
cout<<emayorp2<<endl;
cout<<emayorp1<<endl;
}
else
cout<<"\nERROR: Almenos dos de los numeros son iguales\n";
}

Me compila y bien, pero cuando ingreso los siguientes datos: 4,2,3,5 . Me los ordena mal: 5,3,4,2 y no se porque suceda esto; ademas de que en ocasiones couando ingreso el numero 1 me imprime numeros dierentes o caracteres extraños.