[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&nbsp; 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--