Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dario01dr en 20 Diciembre 2021, 04:04 am



Título: Ayuda codigo
Publicado por: dario01dr en 20 Diciembre 2021, 04:04 am
Hola comunidad, tengo este codigo. Lo que quiero es que el vector r contenga la suma de los elementos de los vectores a,b,c,d. En el codigo dejo el ejemplo.
Saludos

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.  int a[5] = {2,4,6,8,10}; // numeros pares
  7.  int b[5] = {1,3,5,7,9}; // numerosimpares
  8.  int c[5] = {3,7,11,15,19}; // suma de a + b
  9.  int d[5] = {1,1,1,1,1}; // resta de a - b
  10.  int r[4] ={}; //suma de elementos de a,b,c,d
  11.  //ejemplo r = {30,25,55,5}
  12.  int i,j,s;
  13.  
  14.  for (i=0; i<4; i++) {
  15.    r[i] = 0;
  16.    for (j=0; j<5; j++) {
  17.      r[i] = r[i] + a[j];
  18.    }
  19.  }
  20.  
  21.  for (i=0; i<4; i++)
  22.    cout << r[i] << " ";
  23.  
  24.  
  25.  
  26.  return 0;
  27. }
  28.  


Título: Re: Ayuda codigo
Publicado por: .xAk. en 20 Diciembre 2021, 14:42 pm
no entiendo, entonces la suma y la resta están mal. (c y d) O pon r igual a mano.


Título: Re: Ayuda codigo
Publicado por: dario01dr en 20 Diciembre 2021, 14:52 pm
Lo que quiero es que en el arreglo r (de 4 elementos) se almacenen los sumas de los elementos de los vectores a,b,c,d.
Ejemplo: suma de elementos de a: 30
suma de elementos de b: 25
suma de elementos de c: 55
suma de elementos de d: 5
Espero ahora si se entienda.


Título: Re: Ayuda codigo
Publicado por: .xAk. en 20 Diciembre 2021, 17:34 pm
Veo como si incializaras "r" recorriendola llenandola de 0.

recorre "a" suma sus valores y añadelo a la primera casilla de "r"
y lo mismo con "b" ,"c" y "d" en sus posiciones correspondientes.


Título: Re: Ayuda codigo
Publicado por: K-YreX en 20 Diciembre 2021, 20:35 pm
Al tener todos los arrays declarados por separado, tienes que hacer la suma de cada uno de ellos por separado (no puedes hacerlo todo en un bucle). La mejor forma para ello sería una función así:
Código
  1. int sumArray(int numbers[], int size) {
  2.  int sum = 0;
  3.  // Aqui haces la suma desde 0 hasta size-1
  4.  return sum;
  5. }

Y de esta manera tan solo tendrías que hacer:
Código
  1. const int NUM_ARRAYS = 4;
  2. const int ARRAY_SIZE = 5;
  3.  
  4. int main() {
  5.  int a[ARRAY_SIZE] = {...};
  6.  int b[ARRAY_SIZE] = {...};
  7.  //...
  8.  
  9.  int r[NUM_ARRAYS];
  10.  r[0] = sumArray(a, ARRAY_SIZE);
  11.  r[1] = sumArray(b, ARRAY_SIZE);
  12.  //...
  13. }

Otra posibilidad para poder hacerlo mediante un bucle sin importar la cantidad de arrays sería con una matriz (matriz = array de arrays)
Código
  1. const int NUM_ARRAYS = 4;
  2. const int ARRAY_SIZE = 5;
  3.  
  4. int main() {
  5.  int arrays[NUM_ARRAYS][ARRAY_SIZE] = {
  6.    {a0, a1, a2, a3, a4},
  7.    {b0, b1, b2, b3, b4},
  8.    {c0, c1, c2, c3, c4},
  9.    {d0, d1, d2, d3, d4}
  10.  };
  11.  
  12.  int sums[NUM_ARRAYS] = {0}; // Asi inicializas la primera posicion a 0 y el resto al valor por defecto (que es 0 tambien)
  13.  
  14.  for(int i = 0; i < NUM_ARRAYS; ++i) {
  15.    sums[i] = sumArray(arrays[i], ARRAY_SIZE);
  16.  }
  17. }


Título: Re: Ayuda codigo
Publicado por: dario01dr en 21 Diciembre 2021, 03:30 am
Gracias K-YreX, voy a probar tu funcion.
Saludos.  :D ;D ;-)