Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dairus20 en 5 Marzo 2011, 01:46 am



Título: Recorriendo los elementos de una lista en un array con bucle for me da error
Publicado por: dairus20 en 5 Marzo 2011, 01:46 am
Hola, buenas noches estoy apriendo el tema de los array en c pero tengo una duda con este trozo de codigo en concreto:

int suma = 0;
   int array[10];
   int i;
   for (i = 0; i <=10; i++)
   {
      suma += array;
   }
   printf("%d", array[0]);

El titulo se llama recorriendo los elementos de una tabla, pero el problema es que al compilar y ejecutar me da un numero extremadamente elevado miles o varios millones por ejemplo ahora mismo si lo ejecuto asi como esta me da esta salida:

574430056

Alguien me puede decir que estoy haciendo mal o que si es el codigo esta erroneo.

                                       GRACIAS DE ANTEMANO AMIGOS.


Título: Re: Recorriendo los elementos de una lista en un array con bucle for me da error
Publicado por: ace332 en 5 Marzo 2011, 02:06 am
hay dos errores:

1. No se le asignan valores a los elementos del array. Es por eso que al momento de efectuar la suma estos contienen valores no determinados (valores 'basura').

2. Los indices de los elementos del arreglo en este caso son: 0,1,2,...,9. En el condicional del for deberia estar i<10.


Título: Re: Recorriendo los elementos de una lista en un array con bucle for me da error
Publicado por: RyogiShiki en 5 Marzo 2011, 02:10 am
Eso es porque tienes un array sin inicializar, tienes un array en donde no sabes con certeza el valor de cada uno de sus elementos podrías hacer lo siguiente:
Código
  1. int main(){
  2.  
  3.   int suma = 1;
  4.   int array[10];
  5.   for (int i = 0; i < 10; i++){
  6.      array[i] = i;
  7.   }
  8.   for (int j = 0; j < 10; j++){
  9.      array[j] += suma;
  10.      pintf("%d", array[j])
  11.   }
  12.   return 0;
  13. }

Espero entiendas el ejemplo leyendolo y analizandolo


Título: Re: Recorriendo los elementos de una lista en un array con bucle for me da error
Publicado por: Gunit en 5 Marzo 2011, 02:21 am
Creo que lo que quieres hacer es sumar los valores del array en la variable suma no? No entendi bien :S

Antes, tambien tendrias que asignar valores al array...

Esto es lo que se me ocurre:

Lo probe compliando con GCC en linux..

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int suma = 0;
  6. int array[10];
  7.  
  8. array[0] = 1;
  9. array[1] = 1;
  10. array[2] = 1;
  11. array[3] = 1;
  12. array[4] = 1;
  13. array[5] = 1;
  14. array[6] = 1;
  15. array[7] = 1;
  16. array[8] = 1;
  17. array[9] = 1;
  18.  
  19. int i;
  20. for (i = 0; i<10; i++)
  21. {
  22. suma += array[i];
  23. }
  24. printf("%d", suma);
  25. }

No hace falta poner i<=10, i<10 sobra...
Debes indicar que valor del array usar, para eso se usa el indice array[indice]



Título: Re: Recorriendo los elementos de una lista en un array con bucle for me da error
Publicado por: RyogiShiki en 5 Marzo 2011, 02:27 am
Creo que lo que quieres hacer es sumar los valores del array en la variable suma no? No entendi bien :S

Antes, tambien tendrias que asignar valores al array...

Esto es lo que se me ocurre:

Lo probe compliando con GCC en linux..

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int suma = 0;
  6. int array[10];
  7.  
  8. array[0] = 1;
  9. array[1] = 1;
  10. array[2] = 1;
  11. array[3] = 1;
  12. array[4] = 1;
  13. array[5] = 1;
  14. array[6] = 1;
  15. array[7] = 1;
  16. array[8] = 1;
  17. array[9] = 1;
  18.  
  19. int i;
  20. for (i = 0; i<10; i++)
  21. {
  22. suma += array[i];
  23. }
  24. printf("%d", suma);
  25. }

En el bucle for, poniendo i<=10, el bucle continua hasta diez, o sea que del 0 al 10 contando el 0 son 11... debes dejarlo a i<10..
Debes indicar que valor del array usar, para eso se usa el indice array[indice]



No tienes que hacer toda esa asignación, si quieres inicializar cada elemento del array con 1 simplemente haces:
Código
  1. int array[10];
  2. int val = 1;
  3. for(int i = 0; i < 10; i++){
  4.    array[i] = val;
  5. }

y te evitas todas esas lineas


Título: Re: Recorriendo los elementos de una lista en un array con bucle for me da error
Publicado por: dairus20 en 5 Marzo 2011, 13:29 pm
Hola, gracias a todos por vuestras respuestas, gankutsuo: gracias por responderme, pero eso lo explicaba en el libro y luego venía lo del for para optimizar el código por explicaba que si tenias que inicializar 200 0 1000 era muy complicado de esa forma.

Porque utilizaba un for para recorrer todo el array con valores.

Gunit: Gracias por el código lo probaré en breve.