El siguiente ejemplo pide ingresar una lista de números positivos y guardarlos en un array, para luego leerlos y copiar a otro array de forma ordenada sólo aquellos que son múltiplos de 5.
Un ejemplo de ejecución:
¿Qué cambiarías en el programa para que extraiga los múltiplos de otro número?
¿Qué cambiarías para que el orden sea ascendente?
¿Qué otras variaciones añadirías al programa?
#include <iostream>
int main(int argc, char** argv) {
int fin = 0;
int numero;
int listaNumeros[20];
int totalNumeros = 0;
int listaOrdenada[20];
int totalOrdenada = 0;
//lectura por teclado de un conjunto de números positivos, como máximo 20 números
while(!fin && totalNumeros<20){
printf("ingrese un numero:");
scanf("%d", &numero);
if(numero > 0) {
listaNumeros[totalNumeros] = numero;
totalNumeros++;
}else{
fin++;
}
}
//imprimir la lista
for(int i = 0; i<totalNumeros; i++) printf("%d ", listaNumeros[i]);
//seleccionar los múltiplos de 5 ordenados descendente
for(int i = 0; i<totalNumeros; i++){
if( (listaNumeros[i]%5) == 0 ){
int encuentra = 0;
int indice; //indice que recorre la lista ordenada para encontrar la posición donde insertar
int multiploInsertar = listaNumeros[i];//número a insertar en la lista ordenada
indice = totalOrdenada - 1;
//recorremos la lista ordenada de forma descendente y vamos desplazando hasta qu encontramos la posición correcta
while(!encuentra && indice >= 0){
//comparo el número a ubicar con el elemento en la ListaOrdenada en la posición índice
if(multiploInsertar > listaOrdenada[indice]){
//como es mayor muevo el valor de lista ordenada al siguiente índice
listaOrdenada[indice + 1 ] = listaOrdenada[indice];
}
else{
listaOrdenada[indice+1] = multiploInsertar;
totalOrdenada++;
encuentra = 1;
}
indice--;
}
if(!encuentra) {//en el caso que recorra todo el arrayOrdenado y sea mayor a todos, se coloca en el primer elemento
listaOrdenada[0] = multiploInsertar;
totalOrdenada++;
}
}
}
//imprimir la lista
printf("\nNumero de multiplos encontrados %d\n", totalOrdenada);
for(int i = 0; i<totalOrdenada; i++) printf("%d ", listaOrdenada[i]);
return 0;
}
No hay comentarios:
Publicar un comentario