ðHwww.oocities.org/ar/moni2201/ordenar1.htmwww.oocities.org/ar/moni2201/ordenar1.htm.delayedxx€ÕJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ –ˆ{`OKtext/html`3÷{`ÿÿÿÿb‰.HSun, 28 Sep 2003 15:20:58 GMTVMozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)en, *x€ÕJ{` do {

Programa escrito en C++,que permite la ordenacion de numeros con subindice de menor a mayor.

 

Es una sucesión ordenada de acciones elementales (sumas, restas ... y mas claro) que se han de realizar para conseguir la solución al problema planteado.

1 – En la etapa de análisis se trata de definir con la mayor precisión posible el problema que se ha de resolver, generándose un enunciado o especificación del problema.

Por ejemplo dada una serie de numeros que se entran al computador,ordenarlos de menor a mayor y presentarlos en pantalla,

a(0)=10 ,a(1)=2 ,a(2)=50 ,a(3)=1      (1)

el programa debera ordenarlos de menor a mayor,

a(0)=1 ,a(1)=2 ,a(2)=10 ,a(3)=50

2 - A partir de este documento, se debe diseñar un algoritmo que resuelva el problema, y que representaremos en lenguaje algorítmico, dando lugar a un programa.

El siguiente es el diagrama del algoritmo para realizar dicha operacion,

C : define la cantidad de numeros a ordenar,por ejemplo en la ordenacion (1) ,la cantidad es C=4

k : se utiliza para verificar que al llegar al valor (C-1)  que se busco en toda la ordenacion y se encontro que sus valores estan ordenados.

En azul se representa las lineas de codigo correspondientes al do,en rojo al for y en violeta al if.

Inicialmente se entra en el lazo del do y se asigna a k el valor de cero,luego se genera un for de n=1 a un valor menor que C,en el caso de la ordenacion (1) es C=4 y n sera 1,2 ,3 ,con estos valores de n se compara    (2)

 

N[0] > N[1] ,para n=1 

 

N[1] > N[2] ,para n=2

N[2] > N[3] , para n=3

Es decir si C=4 es necesario un for hasta  n<C ,dentro del for hay un if ,que compara los valores ,como se indica en (2),en el caso de ser mayor se produce la inversion,con el bloque de inversion,sino es mayor no se produce la inversion entre los valores comparados y se aumenta k en 1,luego como hay tres comparaciones,si k< (C-1) ,vuelve a realizar el ciclo,solo cuando k=3 los numeros estam ordenados.

 

en siguiente es el codigo fuente escrito en C++,notar que las lineas donde se presenta algunas variables como n,k ,N[0],N[1],N[2] y N[3] no son necesarias y se pueden eliminar.

 

 do { 

      k = 0;

           for (n=1 ;n<(C) ;n++)

}             cout << "para n=" << n << " ,siendo k=" << k << "\n";

                     { if ( N[n-1] > N[n])

                             {

                               NX[n-1]= N[n] ;

                               NX[n] = N[n-1];

                               N[n-1] = NX[n-1];

                               N[n]= NX[n];  

                               cout << "N[0]=" << N[0]<< "  " << "N[1]=" << N[1]<< "  "  << "N[2]="<<N[2]<< "  "  <<"N[3]=" <<N[3] << “  “ ;

                               cout << “\n”;

                              }

                   else

                   k=k+1 ;

                  }

                  

                  }

                             

            }while ( k < (C-1)) ; 

                                     

El programa completo se puede leer en este enlace .

 

 

Eduardo Ghershman ,28.9.03                                                                     enlace a      PROGRAMANDO