[Corsopoc] =?iso-8859-1?Q?es.1_con_ereditariet=E0_e_2_con_la__lista_e_gli__errori?=
Xianguo
xianguo@virgilio.it
Fri, 20 Dec 2002 16:14:02 +0100
This is a multi-part message in MIME format.
------=_NextPart_000_0022_01C2A842.CF8DA670
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0023_01C2A842.CF8DA670"
------=_NextPart_001_0023_01C2A842.CF8DA670
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
vi mando es.1 con il metodo dell'ereditariet=E0,e 2 con la lista,ma mi =
da errore al ternime del prg nel distruttore della lista,spero che =
qualcuno mi pu=F2 aiuta.
grazie infinite!!
e Buona Natale a tutti!!!
------=_NextPart_001_0023_01C2A842.CF8DA670
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2719.2200" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>vi mando es.1 con il metodo =
dell'ereditariet=E0,e 2=20
con la lista,ma mi da errore al ternime del prg nel distruttore =
della=20
lista,spero che qualcuno mi pu=F2 aiuta.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>grazie infinite!!</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>e Buona Natale a=20
tutti!!!</FONT></DIV></BODY></HTML>
------=_NextPart_001_0023_01C2A842.CF8DA670--
------=_NextPart_000_0022_01C2A842.CF8DA670
Content-Type: application/octet-stream;
name="esercizio12.cpp"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="esercizio12.cpp"
#include<iostream.h>
class Time
{ protected:
int h,m;
void Reset(){h=3D0;m=3D0;};
public:
Time(){h=3D0;m=3D0;};
void AddTime(int sh=3D0,int sm=3D0) //somma sh e sm all'h e m del Time
{
m=3Dsm+m;
h=3Dsh+m/60+h;
m=3Dm%60;
h=3Dh%24;
if(m<0){h--;m=3D60+m;};
if(h<0){h=3D24+h;};
};
void SetTime(int sh=3D0,int sm=3D0)//setta Time impostando h e m
{
Reset();
AddTime(sh,sm);
};
int*const hm() //torna indirizzo del vettore in cui contiene h e m
{
int v[2]=3D{h,m};
return(v);
};
Time Show() //stampa h e m ,viene ereditato anche dalla class =
OrologioBase
{
cout<<h<<':'<<m<<'\n';
return(*this);
};
};
class OrologioBase:public Time //eredita dal Time
{ public:
OrologioBase;
void set(Time t) //setta Time uguale al t ricevuto
{
int *const p=3Dt.hm();
h=3Dp[0]; m=3Dp[1];
};
void add(int minuti) //somma minuti al m del Time
{ AddTime(0,minuti);
};
void subtract(int minuti) //sottrae minuti al m del Time
{ AddTime(0,-minuti);
};
void tick () //somma 1 al m del Time
{
AddTime(0,1);
};
};
//fine esericizio1
//inizio esercizio2
template <class L> class lista //lista generica
{
private:
struct nodo{L data;nodo*ptr;};
nodo*ini,*fin,*att;
public:
lista():ini(NULL),att(NULL),fin(NULL){};
void Reset(){att=3Dini;};
void inserisci(L d) //inserisce L in coda alla lista
{
nodo*pu=3Dnew(nodo);
pu->data=3Dd;
pu->ptr=3DNULL;
if(ini=3D=3DNULL){ini=3Dpu;att=3Dpu;fin=3Dpu;}
else{fin->ptr=3Dpu;fin=3Dpu;};
};
L leggi(int n) //restituisce elemento n della lista
{ if((ini!=3DNULL)){Reset();
for(int i=3D1;i<n;i++){att=3Datt->ptr;}
return(att->data);
};
};
void elimina(int n) //elimina elemento n della lista
{
if(ini!=3DNULL){Reset();
nodo *pu=3Datt;
for(int i=3D1;i<n;i++){pu=3Datt;att=3Datt->ptr;}
if(att->ptr!=3DNULL) pu->ptr=3Datt->ptr;
else fin=3Dpu;
delete att;
};
};
~lista() //distruttore
{
Reset();
while(att!=3DNULL)
{ini=3Dini->ptr; //in questo punto mi da errore quando termina il =
prg
delete att;
att=3Dini;
}
}
};
class persona
{ private:
int nO;
lista<OrologioBase> L; //lista di orologioBase
public:
persona(){nO=3D0;L.Reset();}
void addO(OrologioBase O) //aggiungo O alla lista
{
L.inserisci(O);
nO++;
};
void buttoO(int n) //elimino O n dalla lista
{
if((n>0)&&(n<=3DnO)){nO--;L.elimina(n);};
};
void leggiOra(int n) //leggo O n della lista
{
if((n>0)&&(n<=3DnO)){L.leggi(n).Show();};
}
int numeroO() //restituisco numero di O
{
return(nO);
};
=20
};
//fine
void main()
{
Time t,r;
t.SetTime(20,40);
t.Show();
OrologioBase o;
o.set(t);
o.Show();
persona p;
for(int =
i=3D1;i<=3D10;i++){t.SetTime(20,i);o.set(t);p.addO(o);}//aggiungo 10 O =
nella lista
p.buttoO(10); //elimino O n
p.buttoO(9);
p.buttoO(8);
p.buttoO(7);
int n=3Dp.numeroO();
for(int i=3D1;i<n;i++){p.leggiOra(i);}; //leggo O da 1 a n
int s;
cin>>s;
} ;
------=_NextPart_000_0022_01C2A842.CF8DA670--