[Corsopoc] es12 senza errori
Xianguo
xianguo@virgilio.it
Sat, 21 Dec 2002 02:20:54 +0100
This is a multi-part message in MIME format.
------=_NextPart_000_0082_01C2A897.96FA7680
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0083_01C2A897.96FA7680"
------=_NextPart_001_0083_01C2A897.96FA7680
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
=E8 vero,in questo file ho fatto pure la correzione citato prima
------=_NextPart_001_0083_01C2A897.96FA7680
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>
<DIV><FONT face=3DArial size=3D2>=E8 vero,in questo file ho fatto pure =
la correzione=20
citato prima</FONT></DIV></DIV></BODY></HTML>
------=_NextPart_001_0083_01C2A897.96FA7680--
------=_NextPart_000_0082_01C2A897.96FA7680
Content-Type: application/octet-stream;
name="esercizio12.cpp"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="esercizio12.cpp"
#include<iostream.h>
#include<string.h>
//per segnalare errori o metodi migliori,potete scrivere a =
xianguo@virgilio.it
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;
int nn;
public:
lista():ini(NULL),att(NULL),fin(NULL),nn(0){};
void Reset(){att=3Dini;};
void inserisci(L d) //inserisce L in coda alla lista
{ nodo*pu=3Dnew(nodo);
pu->data=3Dd;
pu->ptr=3DNULL;
nn++;
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=3DNULL;
nn--;
for(int i=3D1;i<n;i++){pu=3Datt;att=3Datt->ptr;}
if(att=3D=3Dini){ini=3Datt->ptr;
if(ini->ptr=3D=3DNULL)fin=3DNULL;
}
else{ pu->ptr=3Datt->ptr;
if(pu->ptr=3D=3DNULL)fin=3Dpu;
}
delete att;
};
};
~lista() //distruttore
{
for(int i=3D1;i<=3Dnn;i++){elimina(i);}
}
};
class persona
{ private:
int nO;
lista<OrologioBase> L; //lista di orologioBase
char nome[20];
public:
persona(){nO=3D0; L.Reset();
strcpy(nome,"");
}
void setnome(char *nm)
{
strcpy(nome,nm);
}
char *Shownome()
{
return(nome);
}
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;
p.setnome("nome");
cout<<p.Shownome();
for(int =
i=3D1;i<=3D10;i++){t.SetTime(20,i);o.set(t);p.addO(o);}//aggiungo 10 O =
nella lista
p.buttoO(1); //elimino O 1
p.buttoO(9);
p.buttoO(8);
p.buttoO(7);
int a;
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_0082_01C2A897.96FA7680--