Znači zadatak ide ovako:
Napisati funkciju saberi koja uzima dva vektora realnih brojeva. Ukoliko su vektori iste dužine, funkcija dodaje elemente drugog vektora odgovarajućim elementima prvog vektora. U slučaju da se dužine vektora razlikuju, funkcija treba da generira exception tipa domain_error. Funkcija ne vraća ništa.
Izabrati odgovarajući način prosljeđivanja parametara u funkciju. Napisati i odgovarajući program kojim se testira kreirana funkcija.
Tako da sam napisao sljedeći kod:
#include
#include
#include
using namespace std;
void saberi(vector a, vector& b)
{
vector::iterator ita,itb;
ita=a.begin();
itb=b.begin();
if(a.size()==b.size())
{
while(ita!=a.end())
{
*ita+=*itb;
ita++;
itb++;
}
}
else
throw domain_error(“Nizovi nisu iste dužine!”);
return;
}
int main()
{
vector a,b;
vector::iterator it;
double x;
cout << “Unesite elemente prvog niza.” << endl;
while(cin >> x)
a.push_back(x);
cout << “Unesite elemente drugog niza.” << endl;
while(cin >> x)
b.push_back(x);
try
{
saberi(a,b);
}
catch(exception &err)
{
cout << err.what();
return 0;
}
cout << “Elementi niza nakon sabiranja su:” << endl;
for(it=a.begin();it!=a.end();it++)
cout << *it << endl;
return 0;
}
Kod kompajliram pomoću clang-a.Pri pokretanju programa sve ide normalno do while petlje koja ubacuje elemente drugog niza. Nakon što ispiše “Unesite elemente drugog niza.” tu while petlju jednostavno preskoči i pokrene funkciju saberi koja naravno vraća grešku.Zašto???