Título: Aparecen numeros ramdon en mi array Publicado por: Ghio97 en 13 Agosto 2019, 03:18 am Alguien me podria ayudar con mi codigo en C , lo que quiero es que mediante el motodo "ingresar" asigne un valor a una posicion espesifica a un arreglo y las demas posiciones las marque como vacias pero a la hora de ejecutar aparacen numeros de la nada...... alguien sabe como solucionarlo????
#include<stdio.h> void ingresar(int ar[],int val, int pos); void mostrar(int a[], int f); int main (){ int b[30]; ingresar(b,123,5); mostrar(b,30); return 0; } void ingresar(int ar[],int val, int pos){ int i; int tamanoDelArreglo=sizeof(ar); int tamanioDelPrimerDato=sizeof(ar); int longitud=tamanoDelArreglo/tamanioDelPrimerDato; if (0<pos<=longitud){ ar[pos]=val; } return ; } void mostrar(int a[], int f){ for(int i=1;i<=f; i++){ printf("%i \t ",i); if(a!=0){ printf("%i",a); printf("\n"); }else{ printf("Vacio"); printf("\n"); } } } Título: Re: Aparecen numeros ramdon en mi array Publicado por: EdePC en 13 Agosto 2019, 07:47 am Saludos,
- Primero tienes que saber que los Array se pasan por Referencia (puntero) a las funciones, por esto no te a ha ser posible hallar el tamaño del Array dado con sizeof() ya que ahora es un puntero, y este devolverá siempre el tamaño en bytes del tipo de variable base, en tu caso un int que suele valer 4 bytes. Luego tu cálculo falla ya que 4 / 4 = 1, entonces nunca alcanza a llegar a la posición 5 que especificas en: ingresar(b, 123, 5); -- Solución sencilla: Ya que en C se deben especificar los tamaños de los Array (longitud en tu caso), no tiene mucho sentido hallarlos de nuevo XD. O puedes hacerlo fuera de una función. - Segundo, en C se tiene que declarar las variables y de preferencia también inicializarlas, ya que estas se crean en memoria y tienen como contenido lo que tenga esos espacios de memoria en ese momento, por esto es que te salen números random en tu Array. - Tercero, revisa tu función mostrar, tu For usa i a 1, y usas ese mismo i tal cual para leer los valores de tu Array, pero el Array empieza en 0. También revisa como guardas tu Valor en la Posición de tu Array. - De momento esto me funciona a mí: Código
Citar C:\Users\EdSon\Desktop>gcc ghio.c -o ghio.exe && ghio.exe 1 Vacio 2 Vacio 3 Vacio 4 Vacio 5 123 6 Vacio 7 Vacio 8 Vacio 9 Vacio 10 Vacio 11 Vacio 12 Vacio 13 Vacio 14 Vacio 15 Vacio 16 Vacio 17 Vacio 18 Vacio 19 Vacio 20 Vacio 21 Vacio 22 Vacio 23 Vacio 24 Vacio 25 Vacio 26 Vacio 27 Vacio 28 Vacio 29 Vacio 30 Vacio C:\Users\EdSon\Desktop> Título: Re: Aparecen numeros ramdon en mi array Publicado por: MAFUS en 13 Agosto 2019, 17:26 pm Si necesitas que un array local se inicialice a 0 puedes usar la propiedad de C que dice que en la definición de un array inicializa los primeros elementos a valores explícitos y el resto a 0 hasta rellenarlo.
Esto quiere decir que si escribes Código: int b[30] = {0}; |