[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--