//#include <stdlib.h>
#include <iostream>
#include <string>
#include <cstdio>

class video {
   string marca;
   public:
      video(string);
      video(void);
      void mostra(void);
};
class teclado{
   string descricao;
   public:
      teclado(string);
      teclado(void);
      void mostra(void);
};
class gabinete{
   string cpu;
   public:
   gabinete(string);
   gabinete(void);
   void mostra(void);
};

class micro{
   string nome;
   video vid;
   teclado tec;
   gabinete gab;
   public:
   micro(string, string, string);
   void mostra(void);
};

//---------------- Implementacao da classe video

video::video(){
}

video::video(string marca_video){
    marca = marca_video;                    
}
void video::mostra(){
   cout <<"Marca do video: " << marca << "\n";
}

//----------------- Implementacao da classe teclado
teclado::teclado(string tipo){
   descricao = tipo;                                      
}

teclado::teclado(){
}

void teclado::mostra()
{
    cout <<"Descricao do teclado: " << descricao << "\n";
}
//------------------ Implementacao da classe gabinete
gabinete:: gabinete(string tipo){
  cpu = tipo;
}

gabinete:: gabinete(){
}

void gabinete::mostra(){
   cout <<"Tipo da cpu: " << cpu << "\n";
}
// Implementacao da classe micro
micro::micro(string n, string marca_video, string tipo_cpu):tec("Teclado comum - 128 teclas"),  vid(marca_video), gab(tipo_cpu){
   nome = n;
}

void micro::mostra(){
   cout <<"\nDescricao do micro:" << nome << "\n";
   vid.mostra();
   tec.mostra();
   gab.mostra();
   cout <<"\n";
}

// Rotina principal
int main(){
   micro micro1("Micro1","486 DX 66","Samsung SyncMaster3");
   micro micro2("Micro2","386 DX 25","Nec MultiSync 3D");
   micro1.mostra();
   micro2.mostra();
   getchar();
   return 0;
}

