Extraer el valor mínimo de un arreglo.
¿Arreglo? ¿Qué arreglo? No hay ni un solo arreglo en el código que has compartido.
El valor mínimo que siempre me da 0
y no sé por qué.
Posiblemente el valor mínimo sea 0
, tu comprobación es:
if(a<min){
min=a;
}
Si el valor de a
es menor que min
(inicializado a0
) entonces se iguala min
a a
. Dado que generas tus números aleatorios con rand
:
a=0+rand()%((100+0)-0);
Y rand
sólo genera números positivos, no vas a encontrar ningún numero positivo más pequeño que cero.
Propuesta.
Asigna el valor máximo al mínimo y el mínimo al máximo:
int max=std::numeric_limits<int>::min(), min=std::numeric_limits<int>::max();
De esta manera, cualquier número generado (incluido el 0
) por rand
será menor al valor con el que se inicializa min
.
Otras cosas a tener en cuenta.
- Las cabeceras
<stdio.h>
, <conio.h>
, <time.h>
y <stdlib.h>
son de C, no de C++, si realmente necesitas usarlas (que no las necesitas) debes usar los equivalentes de C++: <cstdio>
, <iostream>
y <cstdlib>
. Consulta esta pregunta para saber por qué.
printf
y scanf
son las funciones de lectura de consola de C, en C++ se usan los objetos stream: std::cout
y std::cin
.
- Las funciones
rand
y srand
son herramientas de C no de C++, deberías usar la cabecera <random>
.
¿Estás seguro de que estabas programando en C++? ¡No lo parece!, por cierto, también te falta devolver un valor en main
. Y tu generación de números no tiene sentido alguno:
a=0+rand()%((100+0)-0);
Literalmente suma cero (cero es el elemento neutro de la suma) y hace el módulo del resultado de rand
contra cien sumando cero y restando cero (que es el elemento neutro de la resta), si realmente quieres usar rand
(que no deberías, consulta esta respuesta para saber por qué) la formula debería eliminar las operaciones neutras:
a=rand()%100;