Ayuda codigo

Iniciado por dario01dr, 20 Diciembre 2021, 04:04 AM

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

dario01dr

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 (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main() {
  int a[5] = {2,4,6,8,10}; // numeros pares
  int b[5] = {1,3,5,7,9}; // numerosimpares
  int c[5] = {3,7,11,15,19}; // suma de a + b
  int d[5] = {1,1,1,1,1}; // resta de a - b
  int r[4] ={}; //suma de elementos de a,b,c,d
  //ejemplo r = {30,25,55,5}
  int i,j,s;

  for (i=0; i<4; i++) {
    r[i] = 0;
    for (j=0; j<5; j++) {
      r[i] = r[i] + a[j];
    }
  }

  for (i=0; i<4; i++)
    cout << r[i] << " ";



  return 0;
}

.xAk.

no entiendo, entonces la suma y la resta están mal. (c y d) O pon r igual a mano.



dario01dr

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.

.xAk.

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.



K-YreX

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 (cpp) [Seleccionar]

int sumArray(int numbers[], int size) {
  int sum = 0;
  // Aqui haces la suma desde 0 hasta size-1
  return sum;
}


Y de esta manera tan solo tendrías que hacer:
Código (cpp) [Seleccionar]

const int NUM_ARRAYS = 4;
const int ARRAY_SIZE = 5;

int main() {
  int a[ARRAY_SIZE] = {...};
  int b[ARRAY_SIZE] = {...};
  //...

  int r[NUM_ARRAYS];
  r[0] = sumArray(a, ARRAY_SIZE);
  r[1] = sumArray(b, ARRAY_SIZE);
  //...
}



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 (cpp) [Seleccionar]

const int NUM_ARRAYS = 4;
const int ARRAY_SIZE = 5;

int main() {
  int arrays[NUM_ARRAYS][ARRAY_SIZE] = {
    {a0, a1, a2, a3, a4},
    {b0, b1, b2, b3, b4},
    {c0, c1, c2, c3, c4},
    {d0, d1, d2, d3, d4}
  };

  int sums[NUM_ARRAYS] = {0}; // Asi inicializas la primera posicion a 0 y el resto al valor por defecto (que es 0 tambien)

  for(int i = 0; i < NUM_ARRAYS; ++i) {
    sums[i] = sumArray(arrays[i], ARRAY_SIZE);
  }
}
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

dario01dr

Gracias K-YreX, voy a probar tu funcion.
Saludos.  :D ;D ;-)