necesito ayuda con un programa en c++! es urgente!!!

Pongo esto aka porque no encontre otro sitio

necesito ayuda con un programa en c++ que suma dos vectores usando funciones
diganme que hice mal, por favor:

#include<iostream>
#include<vector>

using namespace std;
int sumar(vector<int>, int);

int sumar(vector<int> vr, vector<int> vs1, vector<int> vs2){
int tamano, suma;
tamano=vr.size();
for(int i=0;i<tamano;i++){
vr[i]=vs1[i]+vs2[i];
}
suma=vr[tamano];
return suma;

}
int main(){
vector<int> v1, v2;
int a=0, tamano;
cout<<"\nIntroduzca numero de elementos de los vectores a suma\n";
cin>>tamano;
cout<<"\nIntroduzca elementos primer vector, Cltr-Z para terminar\n";
while(cin>>a){
v1.push_back(a);
}
cout<<"\nIntroduzca elementos segundo vector, Cltr-Z para terminar\n";
while(cin>>a){
v2.push_back(a);
}

cout<<endl;
cout<<"\n\nLa suma de los elementos es "<< sumar(v1,v2)<<endl;

return 0;
}


agradeceria mucho si alguien me ayudara, porque me estoy volviendo loca
gracias anticipadas
No dices qué te está pasando pero toma una pista: vr[tamanyo] te va a dar violación de segmento
Y vamos, no sé que estas intentando hacer en la función sumar, ya que sumas componentes de dos vectores pero luego ¿para qué accedes a vr y lo guardas en suma?
Piensa bien lo que quieres hacer ahi:

Si quieres obtener un vector suma y devolverlo

Si quieres obtener un entero con la suma de todos los componentes

No estás haciendo ni lo uno ni lo otro
primero gracias por contestar

la idea es sumar dos vectores usando una funcion, y obtener la suma es decir un vector
pero estoy bien liada
Bueno, miremos por partes, lo que estas haciendo, primero el main:
int main(){
   vector<int> v1, v2;
   int a=0, tamano;
   cout<<"\nIntroduzca numero de elementos de los vectores a suma\n";
   cin>>tamano;
   cout<<"\nIntroduzca elementos primer vector, Cltr-Z para terminar\n";
   while(cin>>a){
      v1.push_back(a);
   }
   cout<<"\nIntroduzca elementos segundo vector, Cltr-Z para terminar\n";
   while(cin>>a){
      v2.push_back(a);
   }


Una pregunta, ¿para qué pides el tamaño? Ya que lo pides debes usarlo en los como condición de parada en los while (incluso podrías añadir un contador al bucle para que fuera mas orientativo). Ojo, digo debes porque recuerda que para sumar dos vectores, deben tener el mismo tamaño. Por tanto la condición de parada del while debería ser con un contador que llegara de 0 a tamano (en menor estricto).

Miramos la función sumar :

int sumar(vector<int> vr, vector<int> vs1, vector<int> vs2){
   int tamano, suma;
   tamano=vr.size();
   for(int i=0;i<tamano;i++){
      vr[i]=vs1[i]+vs2[i];
   }
   suma=vr[tamano];
   return suma;
}


¿De donde sale ese vr? La función a la que llamas le estás pasando dos vectores, vs1 y vs2. El tamaño de vr debe ser igual al de vs1 o vs2 (miden lo mismo).
3 respuestas