#include<iostream.h>

#include<stdlib.h>

 

template<class T,class T1>       //tombosztaly sablon

class tomb {

  public:

    tomb(int meret);

    T osszeg(void);

    T1 atlag(void);

    void tomb_kiiras(void);

    int ertek_hozzaadas(T);

  private:

    T *adatok;

    int meret;

    int index;

  };

 

template<class T,class T1>

tomb<T,T1>::tomb(int meret)

{

  adatok=new T[meret];

  if(adatok==NULL)

  {

    cerr<<"Kev‚s a mem˘ria!-- a program befejez“dik"<<endl;

    exit(1);

    }

  tomb::meret=meret;

  tomb::index=0;

}

 

template<class T,class T1>

T tomb<T,T1>::osszeg(void)

{

  T osszeg=0;

  int i;

  for(i=0;i<index;i++)

  osszeg+=adatok[i];

  return osszeg;

}

 

template<class T,class T1>

T1 tomb<T,T1>::atlag(void)

{

  T osszeg=0;

  int i;

  for(i=0;i<index;i++)

  osszeg+=adatok[i];

  return osszeg/index;

}

 

template<class T,class T1>

void tomb<T,T1>::tomb_kiiras(void)

{

  int i;

  for(i=0;i<index;i++)

  cout<<adatok[i]<<' ';

  cout<<endl;

}

 

template<class T,class T1>

int tomb<T,T1>::ertek_hozzaadas(T ertek)

{

  if(index==meret)

    return(-1);

    else

    {

      adatok[index]=ertek;

      index++;

      return(0);

      }

  }

 

void main(void)

{

  randomize();

  //100 elemes tomb

  tomb<int,long> szamok(100);

  //200 elemes tomb

  tomb<float,float>ertekek(20);

  int i;

  for(i=0;i<50;i++)

  szamok.ertek_hozzaadas(random(100));

  szamok.tomb_kiiras();

  cout<<"A szamok osszege: "<<szamok.osszeg()<<endl;

  cout<<"Atlaga: "<<szamok.atlag()<<endl;

  for(i=0;i<100;i++)

  ertekek.ertek_hozzaadas(random(100)/17.0);

  ertekek.tomb_kiiras();

  cout<<"Az ertekek osszege: "<<ertekek.osszeg()<<endl;

  cout<<"Atlaga: "<<ertekek.atlag()<<endl;

}