Exercicio 1

// ######### util.h #########

#ifndef UTIL_H
#define UTIL_H

#include <string>

using namespace std;

int lerNumero(string);

#endif



//######### util.cpp #########

#include <iostream>
#include <string>

#include "util.h"

using namespace std;

int lerNumero(string x){
 int n;
 cout << x;
 cin >> n;
  return n;
}



// ######### exercicio1.cpp #########

#include <iostream>
#include <string>

#include "util.h"

using namespace std;

int main(){

 int x = lerNumero(string("bla bla :"));

 return 0;
}


Exercicio 2

// ######## ContCirc.h ########

#ifndef CONTCIRC_H
#define CONTCIRC_H

namespace NS_ContCirc {

class ContCirc {

private : 

int n_nums;
int current;

public : 

ContCirc(int);
void conta();
int valor();

};

}

#endif




// ####### ContCirc.cpp #######

#include "ContCirc.h"

namespace NS_ContCirc {

ContCirc::ContCirc(int circ){
 n_nums = circ;
 current = 0;
}

void ContCirc::conta(){
  current = (current + 1) % n_nums;
}

int ContCirc::valor(){
  return current;
}

}




// ####### exercicio2.cpp ########

#include <iostream>

#include "ContCirc.h"

using namespace std;
using namespace NS_ContCirc;

int main() {

	ContCirc c(5);
	c.conta();
	c.conta();
	c.conta();

	cout << c.valor() << endl;
	for (int i=0;i!=4;i++)
		c.conta();
	cout << c.valor();

  return 0;
}


Exercicio 3

// ######### Media.h ########
#ifndef MEDIA_H
#define MEDIA_H

namespace NS_Media{

class Media{

private:

 int acumulador;
 int contador;

public:

 Media();
 void limpa(void);
 void junta(int);
 float resultado();

};

#endif

}

// ######## Media.cpp #######

#include "media.h"

namespace NS_Media{

	Media::Media(){
		acumulador = 0;
		contador = 0;
	}

	void Media::limpa(void){
		acumulador = 0;
		contador = 0;
	}

	void Media::junta(int x){
		acumulador += x;
		contador++;
	}

	float Media::resultado(){
		return  ((float)acumulador) / contador;
	}

}

// ######## exercicio3.cpp ########

#include <iostream>

#include "media.h"


using namespace std;


int main() {

    NS_Media::Media m;

    m.junta(2);
    m.junta(33);
    m.junta(4);
    m.junta(51);
    m.junta(6);

    cout << m.resultado();

    return 0;
}