Hacer un programa o algoritmo.
Se desea realizar un algoritmo que realice las siguientes tareas:
- Leer una lista de números enteros
- Visualizar dichos números
- El algoritmo deberá pedir si yo deseo ordenar en sentido decreciente o creciente (burbuja)
- Entrada: 10, 15, 20, 8
- Salida: decreciente 20 15 10 8
#include <stdio.h>
int main(){
int cont=0,w=0,i,s,k,tem,c,num;
printf("ingresa longitud del arreglo\n");
scanf("%d",&c);
int N[c];
while(cont!=c){
printf("Ingresa numero\n");
scanf("%d",&num);
N[cont]=num;
cont++;
}
for(i=0;i<c;i++){
printf("%d ",N[i]);
}
printf("\nSeleccione: \n");
printf("(1) Orden Decreciente\n");
printf("(2) Orden Creciente\n");
scanf("%d",&s);
if(s==1){
while(w!=(c-1)){
w=0;
for (k=0;k<(c-1);k++){
if(N[k]>=N[k+1]){
w=w+1;
}else{
tem=N[k];
N[k]=N[k+1];
N[k+1]=tem;
}
}
}
for(i=0;i<c;i++){
printf("%d ",N[i]);
}
}else{
while(w!=(c-1)){
w=0;
for (k=0;k<(c-1);k++){
if(N[k]<=N[k+1]){
w=w+1;
}else{
tem=N[k];
N[k]=N[k+1];
N[k+1]=tem;
}
}
}
for(i=0;i<c;i++){
printf("%d ",N[i]);
}
}
return 0;
}
4 comentarios:
Es un programa con una claridad y desarrollo admirables, pero cabe subrayar que se podemos ahorrarnos los "else" en las condiciones de ordenamiento y utilizar solo los if para cada caso. Cambiando los <= por >= y viceversa en las dos condiciones.
Un saludo!
Hola, muchas gracias, me has salvado, no podía realizar lo. Espero que estes bien y saludos.
este código me sirvió de mucho .. te descordera por la ayuda brindada
Creo que es muy deficiente, se podría hacer todo eso con menos variables y ocupando recursividad pero igual gracias por la claridad del código.
Publicar un comentario