a me già così crashava, comunque ti posto tutti i codici delle classi che fino a 2 minuti fa crashavano e ora non più:
codice:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include "Rete.h"
void menu();
int main()
{
Rete r;
while(true){
char c;
menu();
cin>>c;
switch(c){
case 'a':
r.AddUtente();
break;
case 'b':
r.AddGruppo();
break;
case 'c':
r.IscriviUtenteGruppo();
break;
case 'd':
r.ElencoIscrittiGruppo();
break;
case 'e':
r.ElencoGruppiUtente();
default:
cout<<"Nessuna scelta inserita"<<endl;
break;
}
}
system("PAUSE");
return 0;
}
void menu()
{
cout<<"a) aggiungi utente"<<endl;
cout<<"b) aggiungi gruppo"<<endl;
cout<<"c) iscrivi utente a gruppo"<<endl;
cout<<"d) stampa elenco iscritti a gruppo"<<endl;
cout<<"e) stampa elenco gruppi per l'utente"<<endl;
}
//Gruppo.h
#ifndef GRUPPO_H
#define GRUPPO_H
#include <string>
using std::string;
#include "Utente.h"
class Gruppo
{
friend ostream& operator<<(ostream& out, const Gruppo& g);
friend istream& operator>>(istream& in, Gruppo& g);
public:
Gruppo(string n="", string dc="");
~Gruppo();
void AddUtente();
void StampaIscritti() const;
bool CercaUtente(long cd) const;
private:
string nome, data_creazione;
Utente* iscritti[100];
};
#endif
//Gruppo.cpp
#include "Gruppo.h"
#include "Utente.h"
#include <string>
using std::string;
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
Gruppo::Gruppo(string n, string dc): nome(n), data_creazione(dc)
{
for(int i=0; i<100; i++)
iscritti[i]=0;
}
Gruppo::~Gruppo()
{
for(int i=0; i<100; i++)
if(iscritti[i]) delete iscritti[i];
}
void Gruppo::AddUtente()
{
for(int i=0; i<100; i++)
if(!iscritti[i]){
iscritti[i]=new Utente;
cin>>*iscritti[i];
return;
}
cout<<"Ragginto numero massimo di iscritti"<<endl;
}
void Gruppo::StampaIscritti() const
{
for(int i=0; i<100; i++)
if(iscritti[i]) cout<<*iscritti[i];
}
bool Gruppo::CercaUtente(long cd) const
{
for(int i=0; i<100; i++)
if(iscritti[i]){
if(iscritti[i]->GetCodice()==cd) return true;
}
return false;
}
ostream& operator<<(ostream& out, const Gruppo& g)
{
out<<g.nome<<" creato il "<<g.data_creazione<<endl;
return out;
}
istream& operator>>(istream& in, Gruppo& g)
{
cout<<"Inserisci il nome del gruppo: ";
in>>g.nome;
cout<<"Inserisci la data di creazione: ";
in>>g.data_creazione;
return in;
}
//Utente.h
#ifndef UTENTE_H
#define UTENTE_H
#include <string>
using std::string;
#include <iostream>
using std::istream;
using std::ostream;
class Utente
{
friend ostream& operator<<(ostream& out, const Utente& u);
friend istream& operator>>(istream& in, Utente& u);
public:
Utente(long cod=0, string n="", string c="", string mail="");
long GetCodice() const;
private:
long codice;
string nome, cognome, email;
};
#endif
//Utente.cpp
#include "Utente.h"
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
Utente::Utente(long cod, string n, string c, string mail): codice(cod), nome(n), cognome(c), email(mail) { ; }
long Utente::GetCodice() const { return codice; }
ostream& operator<<(ostream& out, const Utente& u)
{
cout<<u.codice<<" "<<u.nome<<" "<<u.cognome<<" "<<u.email<<endl;
return out;
}
istream& operator>>(istream& in, Utente& u)
{
cout<<"Inserisci codice: ";
in>>u.codice;
cout<<"Inserisci nome: ";
in>>u.nome;
cout<<"insrisci cognome: ";
in>>u.cognome;
cout<<"Inserisci mail: ";
in>>u.email;
return in;
}
//Rete.h
#ifndef RETE_H
#define RETE_H
#include "Utente.h"
#include "Gruppo.h"
class Rete{
public:
Rete();
~Rete();
void AddUtente();
void AddGruppo();
void IscriviUtenteGruppo();
void ElencoIscrittiGruppo();
void ElencoGruppiUtente();
private:
Utente* u[500];
Gruppo* g[500];
int cercautente(long cd);
};
#endif
//Rete.cpp
#include "Rete.h"
#include "Utente.h"
#include "Gruppo.h"
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
Rete::Rete()
{
// for(int i=0; i<100; i++)
// u[i]=0;
for(int i=0; i<500; i++)
u[i]=0;
for(int i=0; i<500; i++)
g[i]=0;
}
Rete::~Rete()
{
for(int i=0; i<500; i++){
if(u[i]) delete u[i];
if(g[i]) delete g[i];
}
}
void Rete::AddUtente()
{
for(int i=0; i<5000; i++)
if(!u[i]){
u[i]=new Utente;
cin>>*u[i];
return;
}
cout<<"Non e' piu' possibile iscrivere utenti alla rete"<<endl;
}
void Rete::AddGruppo()
{
for(int i=0; i<500; i++)
if(!g[i]){
g[i]=new Gruppo;
cin>>*g[i];
return;
}
cout<<"Non e' piu' possibile iscrivere gruppi alla rete"<<endl;
}
void Rete::IscriviUtenteGruppo()
{
long cd;
cout<<"inserire codice utente: ";
cin>>cd;
int indice;
if((indice=cercautente(cd))>=0) {
cout<<*u[indice];
for(int i=0; i<500; i++)
{
if(g[i]){
char risp;
cout<<*g[i];
cout<<"vuoi iscriverti?(s/n) ";
cin>>risp;
if(risp=='s' || risp=='S')
g[i]->AddUtente();
}
}
}
}
void Rete::ElencoIscrittiGruppo()
{
for(int i=0; i<500; i++)
if(g[i]){
cout<<*g[i];
char risp;
cout<<"vuoi stampare gli iscritti?(s/n) ";
cin>>risp;
if(risp=='s' || risp=='S')
g[i]->StampaIscritti();
}
}
void Rete::ElencoGruppiUtente()
{
long cd;
cout<<"inserire codice utente: ";
cin>>cd;
for(int i=0; i<500; i++){
if(g[i]){
if(g[i]->CercaUtente(cd))
cout<<*g[i];
}
}
}
int Rete::cercautente(long cd)
{
for(int i=0; i<500; i++)
if(u[i]->GetCodice()==cd) return i;
cout<<"utente non presente"<<endl;
return -1;
}
bhu!.
Ciao e grazie per la disponibilità