allora ho il seguente problema:
devo riuscire ad interrompere una ricezione (effettuata utilizzando la cin>> ridefinita sotto) nel momento in cui inserisco -1 come codice.
il problema è che io devo ricevere n venditori (la ricezione finisce quando si insersce appunto -1) ma quanto inserisco -1 si interrompe solo la ricezione di quel venditore ma non il ciclo dei 30 venditori, questo perchè la funzione getcodice mi ritorna sempre zero, anche se la chiamo al termine di ogni ciclo, quindi dopo aver ricevuto il codice.
premetto che sono agli inizi con la programmazione a oggetti
Codice:
class Venditore
{
public:
Venditore()
{
CodiceVenditore=0;
}
double totale();
int getCodice()
{
return CodiceVenditore;
}
friend ostream& operator << (ostream &cout, Venditore a);
friend istream& operator >> (istream &cin, Venditore a);
private:
Prodotto prod[10];
int CodiceVenditore;
};
ostream& operator << (ostream &cout, Venditore a)
{
cout<<"Codice: "<<a.CodiceVenditore<<endl;
for(int i=0;i<9;i++)
{
cout<<a.prod[i];
}
}
istream& operator >> (istream &cin, Venditore a)
{
cout<<"Codice: ";
cin>>a.CodiceVenditore;
if(a.CodiceVenditore!=-1)
for(int i=0;i<9;i++)
{
cout<<endl<<"Prodotto "<<i+1<<" :";
cin>>a.prod[i];
}
}
double Venditore::totale()
{
double tot;
for(int i=0;i<9;i++)
{
tot+=prod[i].getProdotto();
}
}
Codice:
#include<iostream.h>
#include<stdlib.h>
#include"Prodotto.h"
#include"Venditore.h"
int main() {
Venditore prova[30];
int i=0,k;
do
{
cin>>prova[i];
k=prova[i].getCodice();
i++;
}while(k!=-1&&i<30);
system("pause");
return 0;
}