Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: GGZ en 3 Octubre 2015, 17:09 PM

Título: [C] Completar arreglo con numeros pares!
Publicado por: GGZ en 3 Octubre 2015, 17:09 PM
¿Cómo hago esto , por qué siempre se me sobrescribe una variable mas del arreglo?

Primero de todo, ¿tiene 48 elementos no?

/*
Escribir un programa que complete un arreglo con los números pares que se encuentren entre 100 y 200 y los muestre en pantalla en orden descendente.
*/

#include <stdio.h>

int main (void){
int a[48];
int i,j;

i=j=0;

for (i=51; i<100; i++){
a[j]=i*2;
j++;

}

//Muestro

for (j=j-1; j>=0; j--)printf("%d\n",a[j]);


return 0;
}

Título: Re: [Problema] Arreglos! >:((
Publicado por: ivancea96 en 3 Octubre 2015, 17:16 PM
se te sobreescribe una variable más del arreglo. Explícate.
Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: GGZ en 3 Octubre 2015, 17:19 PM
Primero que todo ese programa es que escribí no funciona, es más si cambio algo por ejemplo a[j]=i; cambia tambien la variable j!!
¿Por quéé?

¿Cómo debería hacer ese programa?

Puedes programarlo y explicarme como lo has hecho, porque ya me he cansado de esperar.

Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: 0xFer en 3 Octubre 2015, 18:34 PM
Lo complicas al momento de imprimir los datos, debería ser así:


for( i = 0; i < 48; i++)
   printf("%d\n",a[i]);


Ex novo
Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: GGZ en 3 Octubre 2015, 18:49 PM
/*
Escribir un programa que complete un arreglo con los números pares que se encuentren entre 100 y 200 y los muestre en pantalla en orden descendente.
*/

#include <stdio.h>

int main (void){
int a[48];
int i,j;

j=0;

for (i=51; i<100; i++){
a[j]=i*2;
j++;

}
printf ("j: ###%d\n",j);



return 0;
}


El valor de j es 199

/*
Escribir un programa que complete un arreglo con los números pares que se encuentren entre 100 y 200 y los muestre en pantalla en orden descendente.
*/

#include <stdio.h>

int main (void){
int a[48];
int i,j;

j=0;

for (i=51; i<100; i++){
a[0]=i*2;
j++;

}
printf ("j: ###%d\n",j);



return 0;
}


El valor de j es 49!



¿Qué carajo!?

El problema es como está definido el array, pero ¿Por qué? si son 48 elementos.
Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: ivancea96 en 3 Octubre 2015, 18:56 PM
Cita de: nisteeklod en  3 Octubre 2015, 18:49 PM
/*
Escribir un programa que complete un arreglo con los números pares que se encuentren entre 100 y 200 y los muestre en pantalla en orden descendente.
*/

#include <stdio.h>

int main (void){
int a[48];
int i,j;

j=0;

for (i=51; i<100; i++){
a[0]=i*2;
j++;

}
printf ("j: ###%d\n",j);



return 0;
}


El valor de j es 49!



¿Qué carajo!?

Evidentemente. El for es lo que tiene, que incrementa las variables xD


Con respecto a la primera pregunta, ya no hace falta decir nada, dado esto último. Accedes a a[48], que no existe. Y como la variable j está en esa posición, sobreescribes la memoria. Simplemente no accedas a posiciones que salen del rango del array.
Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: GGZ en 3 Octubre 2015, 18:59 PM
Cita de: ivancea96 en  3 Octubre 2015, 18:56 PM
Evidentemente. El for es lo que tiene, que incrementa las variables xD


Con respecto a la primera pregunta, ya no hace falta decir nada, dado esto último. Accedes a a[48], que no existe. Y como la variable j está en esa posición, sobreescribes la memoria. Simplemente no accedas a posiciones que salen del rango del array.

Jajajajaja, no estaba todo pegado todavía.

¿Pero no es que tiene 48 elementos, me equivoco?
Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: ivancea96 en 3 Octubre 2015, 19:02 PM
Son 48 elementos. Es correcto. Pero empieza por 0.

Para que te hagas una idea, en un array de 2 elementos:
[ 0 ],[ 1 ]. Son 2 elementos. No está [ 2 ], ese sería un tercero.
Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: GGZ en 3 Octubre 2015, 19:22 PM
Ya lo entendí

¡Cómo se me pudo pasar eso!

Damn, nigga!