Professional Documents
Culture Documents
Comparemos ambas soluciones. Si bien la segunda es mas clara para leer (tanto el Chapin
como el Pascal), es menos eficiente. Veamos por que:
Supongamos que los tres caracteres sean D , P y H, es decir c1=D , c2=P y c3=H,
Supongamos que los tres caracteres sean M , B y W, es decir c1=M , c2=B y c3=W,
De todos modos, ya que no conocemos el juego de datos que entrar, concluimos que el primer
algoritmo es mas eficiente.
Pero tenemos otra posibilidad de resolver el problema que tal vez no sea la primer forma que
nos viene a la mente al intentar el algoritmo, pero que tal vez sea tanto o mas eficiente que la
primera
Mtodo 3 : Leamos las tres letras e intercambiemos para dejar la menor en c1. Para esto
comparo c1 con c2 y si c1 es mayor que c2 las intercambio mediante un valor auxiliar. En c1
qued la menor de esas dos. Luego comparo c1 con c3 y hago lo mismo que en el caso anterior.
Estoy seguro que en c1 est la letra mas chica de las tres. Luego simplemente comparo c2 con c3
e imprimo en consecuencia.
14
Algoritmos y Estructuras de Datos
else writeln(c1,c3,c2)
else if ((c2<c1) and (c2<c3)) then
if c1<c3 then writeln(c2,c1,c3)
else writeln(c2,c3,c1)
else
if c1<c2 then writeln(c3,c1,c2)
else writeln(c3,c2,c1)
end; writeln;
for indi:=1 to 6 do
begin
case indi of
1: begin c1 := 'P' ; c2 := 'Q' ; c3 := 'R' end ;
2: begin c1 := 'P' ; c2 := 'R' ; c3 := 'Q' end ;
3: begin c1 := 'Q' ; c2 := 'P' ; c3 := 'R' end ;
4: begin c1 := 'Q' ; c2 := 'R' ; c3 := 'P' end ;
5: begin c1 := 'R' ; c2 := 'P' ; c3 := 'Q' end ;
6: begin c1 := 'R' ; c2 := 'Q' ; c3 := 'P' end
end;
write('Metodo 2 - ',c1,c2,c3,' ');
if ((c1<c2) and (c1<c3)) then if c2<c3 then writeln(c1,c2,c3)
else writeln(c1,c3,c2);
if ((c2<c1) and (c2<c3)) then if c1<c3 then writeln(c2,c1,c3)
else writeln(c2,c3,c1);
if ((c3<c1) and (c3<c2)) then if c1<c2 then writeln(c3,c1,c2)
else writeln(c3,c2,c1);
end; writeln;
for indi:=1 to 6 do
begin
case indi of
1: begin c1 := 'P' ; c2 := 'Q' ; c3 := 'R' end ;
2: begin c1 := 'P' ; c2 := 'R' ; c3 := 'Q' end ;
3: begin c1 := 'Q' ; c2 := 'P' ; c3 := 'R' end ;
4: begin c1 := 'Q' ; c2 := 'R' ; c3 := 'P' end ;
5: begin c1 := 'R' ; c2 := 'P' ; c3 := 'Q' end ;
6: begin c1 := 'R' ; c2 := 'Q' ; c3 := 'P' end
end;
write('Metodo 3 - ',c1,c2,c3,' ');
if c2<c1 then begin aux:=c1 ; c1:=c2 ; c2:=aux end;
if c3<c1 then begin aux:=c1 ; c1:=c3 ; c3:=aux end;
if c2<c3 then writeln(c1,c2,c3)
else writeln(c1,c3,c2)
end;
write('Pulse una tecla . . .'); read(rta)
end.
16