Función pedir un a llenar un array

<< < (2/2)

MAFUS:
No hace falta que inicialices un array si después vas a darles valores. Basta con
Código:

int mi_array[10];


Recuerda que para pedir datos del usuario debes usar scanf. Para enteros se usa el parámetro %i o %d.

Código:

int num;
scanf("%d", &num);

Atika:
El tamaño del array numero es 10, por lo que los índices van de 0 a 9. Sin embargo, estás intentando leer en numero[10], lo cual está fuera de los límites del array.

scanf("%d",&numero[10]); <--- Esta línea sobra, al ser un array de 10 elementos, tienes que recordar que el primer elemento es el 0, el segundo el 1... y así hasta el 9, que serían los diez
elementos.

El bloque if tiene una condición incorrecta (if((numero < 0)) && ((numero > 5))). Parece que estás intentando validar si algún número ingresado está fuera del rango del 1 al 4, pero la lógica está equivocada. Para que sea válido sustitúyelo por: if (numero < 1 || numero > 4)


El do-while tiene un error de sintaxis: falta un punto y coma al final de la condición y también hay un error en la lógica de la condición. Si lo corregimos sería algo así: } while (numero < 1 || numero > 4);

Con paciencia lo lograrás.

D3s0rd3n:
Primero y te lo digo como amigo, tu codigo esta horrible. Hay muchas maneras de hacer lo que buscas pero intentaré mostrarte una forma simple para que agarres práctica. Uno de los primeros problemas al que te vas a enfrentar es que este array es inaccesible a tu funcion principal. Es muy tedioso lidiar con arrays cuando se trata de accesarla atraves de una funcion y si nada mas la vas a modificar una vez (como creo que es tu caso) puedes usar una allocacion dinamica. Solo acuerdate de liberarla cuando termines. Y lo bueno de este codigo es que es facil modificarlo para que funcione cpn diferentes valores. Otra es que para poder validar los números en este caso uso unsigned int para poder solo usar una comparación y no tener que preocuparse por los numeros negativos. Ademas deberias tomar en cuenta que cuando haces algo veces repetidas es mejor usar un ciclo que escribirlo varias veces.

Código
#include <stdio.h>
#include <stdlib.h>
 
unsigned int *obtenerNumeros();
 
int main() {
unsigned int *numeros = obtenerNumeros();
 
for(int i = 0; i < 10; i++) {
printf("%d\n", numeros[i]);
}
 
free(numeros);
 
}
 
unsigned int *obtenerNumeros() {
unsigned int *ret = malloc(10);
int i = 0;
unsigned int numero;
 
printf("ingresa 10 numeros del 1 al 4\n");
 
do {
scanf("%u", &numero);
 
if(numero > 4) {
printf("%d no es un numero valido, vuelve a intentar\n", numero);
} else {
ret[i] = numero;
i++;
}
} while(i < 10);
 
return ret;
}
 

Navegación

[0] Índice de Mensajes

[*] Página Anterior