Cómo escribir un programa en C que lea en cinco enteros, y luego determine e imprima el entero más grande y más pequeño del grupo

En primer lugar, supongo que tiene, al menos, una computadora, un editor de texto, un compilador de lenguaje C, y que sabe cómo compilar un programa C en un binario ejecutable. Si esto es cierto, puede usar los siguientes comandos en C para llegar a una solución a la declaración del problema:

  • scanf : se usa para leer valores de la entrada estándar
  • printf : esto se usa para imprimir valores a la salida estándar
  • #include : esto trae los dos comandos anteriores al programa para su uso
  • #include : esto le permite usar las constantes INT_MIN e INT_MAX para los valores de números enteros más pequeños y más grandes asignables a un tipo entero con signo

Sabiendo esto, ahora puede escribir lo siguiente en su editor de texto:

#include
#include

/ * Define la cantidad de veces que vas
pedirle al usuario su aporte. Esto te permite
para personalizar el programa más tarde y evita el
codificación dura de valores en su código * /
#definir NÚMEROS 5

int main (nulo)
{
int i = 0;
int curval = 0;
/ * Establezca su máximo inicial lo más bajo posible * /
int maxval = INT_MIN;
/ * Establezca su mínimo inicial lo más alto posible * /
int minval = INT_MAX;

/ * Recorrer y preguntar al usuario por el definido
número de valores * /
para (i = 0; i <NÚMEROS; i ++)
{
/ * Solicitar al usuario el siguiente valor * /
printf (“Ingrese el siguiente valor:”);

/ * Obtener el siguiente valor del usuario * /
scanf (“% d”, & curval);

/ * Comprueba si este es nuestro mayor o
valor más pequeño todavía * /
if (curval> maxval) maxval = curval;
if (curval <minval) minval = curval;
}

/ * Mostrar los resultados * /
printf (“El valor más pequeño ingresado fue:% d \ n”, minval);
printf (“El valor más grande ingresado fue:% d \ n”, maxval);

/ * Finaliza el programa * /
devuelve 0;
}

Ahora puede guardar este archivo en su computadora. Después de eso, compila el código usando el compilador de C y ejecuta el binario generado.

Escanee o lea (0, buffer, bufferlen) para leer, llame eso en un ciclo para obtener 5 números. A medida que los lea, conviértalos si es necesario y colóquelos en una matriz int. Podría asignar dinámicamente con calloc (), o simplemente int arr [5] funcionaría.

Alternativamente, lea en 1 cadena y divídalo por un separador, y colóquelo en una lista. De cualquier manera funcionará.

Luego, simplemente revise la lista, realice un seguimiento del mínimo que ha visto y el máximo que ha visto, luego imprima los dos números que encontró.

Pequeño programa bastante simple, mucha documentación sobre todos los bits que necesitará en línea. Recomiendo escribir su propia función string-> int si usa read () para la entrada, ya que atoi () es bastante impredecible y propenso a fallar al azar.

#include

int main () {

// primero crea una matriz que pueda almacenar 5 números

int nums [5]; // nums puede almacenar 5 números

int i, max, min;

// max y min se declaran para almacenar el valor máximo y mínimo

// se declara que se usa como variable de bucle, es decir, para acceder a los elementos de la matriz

// Ahora lee los 5 números del usuario usando un bucle for

printf (“Ingrese 5 números:”);

para (i = 0; i <5; i ++) {

scanf (“% d”, & nums [i]);

}

/ * Después de leer 5 números, supongamos que

primer número en la matriz, es decir, nums [0] es mayor * /

max = nums [0];

/ * de manera similar, suponga que el primer número es el más pequeño * /

min = nums [0];

/ * Ahora acceda a cada miembro de la matriz y verifique si es mayor que max

* si es así, cópielo en la variable max y siga haciendo lo mismo hasta

* Se alcanza el final de la matriz.

* *

* usa la misma lógica para el mínimo * /

para (i = 0; i <5; i ++) {

if (max

max = nums [i];

}

if (min> nums [i]) {// si min es mayor que el número actual, el número actual es mínimo hasta ahora

min = nums [i];

}

}

// finalmente imprime los números máximo y mínimo en la matriz

printf (“Máximo:% d \ t Número mínimo:% d”, máximo, mínimo);

devuelve 0;

}

No sé si esta es la forma más eficiente, pero aquí hay una forma que es O (n).

Primero depende si desea leer desde un archivo, stdin o argumentos de entrada. Pero puedes buscar en Google cualquiera de estos tres que quieras usar y encontrar un montón de ejemplos. Pero usaré argumentos de entrada para el programa ya que lo he estado haciendo mucho últimamente.

  1. Asegúrese de que argc sea mayor que 5 o salga, utilizando una instrucción if como:

#include // printf
#include // atoi

int main (int argc, int ** argv) {
if (argc <6) {
printf (“No hay suficientes argumentos dados \ n”);
volver -1; // salir del programa
}

  1. Si es así, cree una matriz int llamada números, por ejemplo, de tamaño 5.

números int [5];

  1. Haga un bucle for para copiar los valores de argv los argumentos de entrada al programa, en la matriz y use atoi para convertir la matriz char en un int, así:

int i;
para (i = 0; i <5; i ++) {
números [i] = atoi (argv [i + 1]);
}

3. Luego, haga dos variables int para contener los valores más grandes y más pequeños y póngalos iguales al primer elemento en su matriz de números.

int más grande = números [0];
int más pequeño = números [0];

4. Recorra la matriz y encuentre el valor más grande y el más pequeño mediante verificación

para (i = 0; i <5; i ++) {
if (números [i]> mayor)
mayor = números [i];

if (números [i] más pequeño = números [i];
}

5. Imprima el más grande y el más pequeño

printf (“El número más grande es:% d \ nEl número más pequeño es:% d \ n”, más grande, más pequeño);
devuelve 0;
}