No sé por qué pero hoy estaba recordando mis inicios en esto de la programación y vino a mi mente una ocasión en la que tuve que sacar el mayor de 3 números en el lenguaje de programación C.
Recuerdo que hice un montón de estructuras de control if, comparando el número 1 con el 2, luego el 1 con el 3, y así sucesivamente; cuando en realidad se puede resolver de una forma más elegante.
Nota: como vamos a ver arreglos, recomiendo que veas: Arreglos en C
Lo que vamos a utilizar es un arreglo de longitud fija. Es decir, un arreglo de 3. Y vamos a pedir los números por pantalla.
Más tarde recorremos ese arreglo y comparamos el número actual por el mayor hasta el momento.
#include <stdio.h>
int main(int argc, char const *argv[])
{
// Aquí almacenaremos los 3 números
int numeros[3];
for (int i = 0; i < 3; ++i)
{
printf("Por favor, ingresa el numero %d:\n", i + 1); // Sumar 1 porque empezamos desde 0
scanf("%d", &numeros[i]);
}
//Suponemos que el mayor es el primer número
int numeroMayor = numeros[0];
// Comenzar desde el 1, porque estamos suponiendo que el 0 es el mayor
for (int indice = 1; indice < 3; ++indice)
{
int numeroActual = numeros[indice];
if (numeroActual > numeroMayor){
// Cambiar únicamente si el actual es mayor que numeroMayor
numeroMayor = numeroActual;
}
}
printf("De los 3 numeros que proporcionaste, el mayor es %d\n", numeroMayor);
return 0;
}
Para “optimizar” el algoritmo recorremos el arreglo desde 1, no desde 0 como siempre lo hacemos. Y suponemos que el mayor es el primer elemento, es decir, el del índice 0.
De todos modos, si el número más grande no es el primer elemento entonces en la comparación dentro del ciclo se asignará al nuevo valor.
Cuando ejecutamos el programa tenemos que introducir los 3 números. Aquí una captura:
El algoritmo es correcto.
Únicamente cambiamos las comparaciones y nombres de variables. Queda así:
#include <stdio.h>
int main(int argc, char const *argv[])
{
// Aquí almacenaremos los 3 números
int numeros[3];
for (int i = 0; i < 3; ++i)
{
printf("Por favor, ingresa el numero %d:\n", i + 1); // Sumar 1 porque empezamos desde 0
scanf("%d", &numeros[i]);
}
//Suponemos que el menor es el primer número
int numeroMenor = numeros[0];
// Comenzar desde el 1, porque estamos suponiendo que el 0 es el menor
for (int indice = 1; indice < 3; ++indice)
{
int numeroActual = numeros[indice];
if (numeroActual < numeroMenor){
// Cambiar únicamente si el actual es menor que numeroMenor
numeroMenor = numeroActual;
}
}
printf("De los 3 numeros que proporcionaste, el menor es %d\n", numeroMenor);
return 0;
}
Cuando lo ejecuto el resultado es este:
El algoritmo es correcto.
Con este enfoque podemos comparar 4, 5 o más números cambiando pocas cosas. Para ejemplificar aquí dejo el fragmento de código para encontrar el mayor de 5 números:
#include <stdio.h>
int main(int argc, char const *argv[])
{
// Aquí almacenaremos los 5 números
int numeros[5];
for (int i = 0; i < 5; ++i)
{
printf("Por favor, ingresa el numero %d:\n", i + 1); // Sumar 1 porque empezamos desde 0
scanf("%d", &numeros[i]);
}
//Suponemos que el mayor es el primer número
int numeroMayor = numeros[0];
// Comenzar desde el 1, porque estamos suponiendo que el 0 es el mayor
for (int indice = 1; indice < 5; ++indice)
{
int numeroActual = numeros[indice];
if (numeroActual > numeroMayor){
// Cambiar únicamente si el actual es mayor que numeroMayor
numeroMayor = numeroActual;
}
}
printf("De los 5 numeros que proporcionaste, el mayor es %d\n", numeroMayor);
return 0;
}
Con este resultado:
Y así podemos ir jugando con este maravilloso, poderoso, rápido y eficaz lenguaje que en lo personal respeto mucho.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.
Ver comentarios