[C con Clase] Sumar todos los elementos de un array

Steven Davidson srd4121 en njit.edu
Vie Feb 5 18:20:48 CET 2010


Hola Pablo,

pablo wrote:
> Hola tengo el problema de que tengo un array de 10 elementos de los
> cuales quiero sacar la suma de todos los elementos del mismo, tengo
> dudas con la sintaxis, pensaba que lopodia hacer de la siguiente
> manera pero veo que se vuelve engorroso asi que imagino que debe
> haber otra forma mas sencilla.
> La forma que pensaba es:
> 
> int num [10];
> int suma = (num [0] + num [1] + .... + num [9]);
> cout << "la suma es (num) " << endl;
> 
> Espero no estar tan equivocado, agradeceria que me saquen de esta
> duda. Desde ya gracias!
> 

Como puedes observar, si realizas todas las sumas explícitamente, puedes 
tardar una eternidad especialmente si existen miles o millones de 
elementos en un array. También tendrías problemas si después de escribir 
todo el código del programa, averiguas que la cantidad de elementos del 
array es incorrecta. Esto significa que tendrías que modificar el 
programa por lo menos la parte de la suma, y posiblmente otras partes.

Cuando no puedas realizar una operación compleja en un solo instante, 
entonces divide el problema en varias acciones de operaciones más 
simples. La solución en tu caso es realizar varias sumas parciales, para 
obtener la suma total. La operación más simple que puedes hacer es sumar 
dos números. Al principio, sumamos los dos primeros números. Después 
podemos ir sumando la suma parcial y el siguiente número en el array. 
Por ejemplo,

suma = num[0] + num[1];

suma += num[2];
suma += num[3];
suma += num[4];
...
suma += num[9];

Aquí la variable 'suma' actúa como un "acumulador", ya que va acumulando 
el resultado hasta que terminemos con nuestro algoritmo.

Obviamente, tampoco vamos a escribir todo esto explícitamente. Sin 
embargo, vemos que existe un patrón. También vemos que el patrón repite 
varias veces. Esto implica que usaremos un bucle para llevar a cabo 
todas estas operaciones relacionadas.

La primera suma no parece que pertenezca al patrón, pero podemos 
modificarla para cambiar su forma a la del patrón. En la suma, el número 
0 (cero) es el elemento neutro que no la varía. Aplicamos esta propiedad 
aritmética sumando 0 al principio. Obtenemos lo siguiente:

suma = 0;

suma += num[0];
suma += num[1];
suma += num[2];
...
suma += num[9];

Ahora podemos ver un patrón común a todos los elementos.


Espero que este análisis aclare las dudas.

Steven





Más información sobre la lista de distribución Cconclase