While loop problem C++

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???

Prije druge while petlje dodaj ovo:

cin.clear(); cin.ignore(10000,'\n');

Zatim pogledaj sta proslijedujes u funkciju saberi, dali ce vektor a uopste biti promijenjen?

Hvala vam velika. Dodao sam samo cin.clear() ispred petlje. To što mi funkcija saberi uzima b po referenci mi je ostalo slučajno, to sam popravio.

Ne znam sto svi toliko hocete da kompajlirate preko tog clanga, iako je Amer rekao, dovoljan je g++ :stuck_out_tongue:

:smiley:

Daje bolje poruke grešaka. Probaj

Mislim da gcc 4.8 sad ima slican output ipak i meni je Clang nekako drazi kad ja nesto pisem al’ kad kompajlujem nesto sto cu koristiti uvijek gcc.

Evo da ne otvaram novu temu pitat ću ovdje. Zašto program kompajliran na jednom računaru neće raditi na drugom?

Tu moze da utice vise faktora: razlicite arhitekture (procesori), OS-ovi cak i verzije (g)libc biblioteke; npr. ako si kompajlirao na zadnjoj verziji (g)libc-a, vjerovatno nece raditi na starijoj verziji zbog razlicitog ABI-ja.

Mislim da se na ovo pitanje odgovori (ili barem treba odgovoriti) u prvim casovima nekog C/C++ kursa. Ako to nije slucaj kod tebe, kurs ili je lose organizovan ili predavac nema pojma ili je u pitanju nesto drugo. C/C++ ne idu bez nekih osnova arhitekture; zamisli da ides na kurs za pilota a nikad nisi cuo za avion.

Hoće li pomoći ako statički linkujem standardne biblioteke?

Hoće