[C] Completar arreglo con numeros pares!

Iniciado por GGZ, 3 Octubre 2015, 17:09 PM

0 Miembros y 1 Visitante están viendo este tema.

GGZ

¿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;
}

LET'S DO STUFF!!

ivancea96

se te sobreescribe una variable más del arreglo. Explícate.

GGZ

#2
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.

LET'S DO STUFF!!

0xFer

#3
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
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

GGZ

#4
/*
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.
LET'S DO STUFF!!

ivancea96

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.

GGZ

#6
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?
LET'S DO STUFF!!

ivancea96

#7
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.

GGZ

#8
Ya lo entendí

¡Cómo se me pudo pasar eso!

Damn, nigga!
LET'S DO STUFF!!