Foro de elhacker.net

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?

Código
  1. /*
  2. 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.
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. int main (void){
  8. int a[48];
  9. int i,j;
  10.  
  11. i=j=0;
  12.  
  13. for (i=51; i<100; i++){
  14. a[j]=i*2;
  15. j++;
  16.  
  17. }
  18.  
  19. //Muestro
  20.  
  21. for (j=j-1; j>=0; j--)printf("%d\n",a[j]);
  22.  
  23.  
  24. return 0;
  25. }


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í:

Código
  1.  
  2. for( i = 0; i < 48; i++)
  3.    printf("%d\n",a[i]);
  4.  

Ex novo


Título: Re: [C] Completar arreglo con numeros pares!
Publicado por: GGZ en 3 Octubre 2015, 18:49 pm
Código
  1. /*
  2. 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.
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. int main (void){
  8. int a[48];
  9. int i,j;
  10.  
  11. j=0;
  12.  
  13. for (i=51; i<100; i++){
  14. a[j]=i*2;
  15. j++;
  16.  
  17. }
  18. printf ("j: ###%d\n",j);
  19.  
  20.  
  21.  
  22. return 0;
  23. }

El valor de j es 199

Código
  1. /*
  2. 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.
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. int main (void){
  8. int a[48];
  9. int i,j;
  10.  
  11. j=0;
  12.  
  13. for (i=51; i<100; i++){
  14. a[0]=i*2;
  15. j++;
  16.  
  17. }
  18. printf ("j: ###%d\n",j);
  19.  
  20.  
  21.  
  22. return 0;
  23. }

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
Código
  1. /*
  2. 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.
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. int main (void){
  8. int a[48];
  9. int i,j;
  10.  
  11. j=0;
  12.  
  13. for (i=51; i<100; i++){
  14. a[0]=i*2;
  15. j++;
  16.  
  17. }
  18. printf ("j: ###%d\n",j);
  19.  
  20.  
  21.  
  22. return 0;
  23. }

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
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!