Introducción

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.

Mayor de 3 números en C

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:

Mayor de 3 números en C

El algoritmo es correcto.

Menor de 3 números en C

Ú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:

Menor de 3 números en C

El algoritmo es correcto.

Más números

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:

Mayor de 5 números en C

Y así podemos ir jugando con este maravilloso, poderoso, rápido y eficaz lenguaje que en lo personal respeto mucho.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Resetear GOOJPRT PT-210 MTP-II (Impresora térmica)

El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…

2 semanas hace

Proxy Android para impresora térmica ESC POS

Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…

2 semanas hace

Android – Servidor web con servicio en segundo plano

En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…

2 semanas hace

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

1 mes hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace