#include <iostream>
#include <math.h>
#include <vector>
#include <string>
using namespace std;
class Coordenada{
int x_, y_;
public:
Coordenada(){}
Coordenada(int x, int y)
{
x_ = x;
y_ = y;
}
int getX()
{
return x_;
}
int getY()
{
return y_;
}
float distancia(Coordenada b)
{
return sqrt(pow(getX() - b.getX(),2) + pow(getY() - b.getY(),2));
}
};
class Municipio{
int id, populacao;
string nome;
Coordenada local;
public:
Municipio(int i, string n, int pop, Coordenada c)
{
id = i; nome = n; populacao = pop; local = c;
}
int getPopulacao()
{
return populacao;
}
string getNome()
{
return nome;
}
Coordenada getCoordenada()
{
return local;
}
int getId()
{
return id;
}
};
class Mapa{
vector<Municipio> municipios;
public:
void addMunicipio(Municipio m)
{
municipios.push_back(m);
}
Municipio getMunicipio(int id){
for(int d=0 ; d<municipios.size();d++){
if(municipios[d].getId()==id){
return municipios[d];
}
}
}
Municipio getMaior()
{
int maiorPopulacao = 0;
int maior;
for(int i = 0; i < municipios.size(); i++)
{
if(municipios[i].getPopulacao() > maiorPopulacao)
{
maior = i;
maiorPopulacao = municipios[i].getPopulacao();
}
}
return municipios[maior];
}
void drawMapa()
{
cout<<endl;
for(int i = 1; i<=5 ; i++)
{
for(int j = 1; j<=10; j++)
{
int num = 0;
for(int s = 0; s<municipios.size();s++)
{
if(municipios[s].getCoordenada().getX()==i && municipios[s].getCoordenada().getY()==j)
{
cout<<municipios[s].getId();
num=1;
}
}
if(num==0){
cout<<"0";
}
}
cout<<endl;
}
}
};
int main()
{
Coordenada c1(2,3);
Coordenada c2(4,4);
Coordenada c3(3,4);
Municipio lavras(1, "Lavras", 100000, c1);
Municipio nepomuceno(2, "Nepomuceno", 30000, c2);
Municipio bh(3, "BH", 1000000, c3);
Mapa minas;
minas.addMunicipio(lavras);
minas.addMunicipio(nepomuceno);
minas.addMunicipio(bh);
cout<<"Maior populacao: "<<minas.getMaior().getPopulacao()<<endl;
cout<<"Municipio: "<<minas.getMaior().getNome()<<endl;
cout<<"Distancia: "<<lavras.getCoordenada().distancia(nepomuceno.getCoordenada());
minas.drawMapa();
int id;
cout<<"Pesquise um municipio pelo id: "<<endl;
cin>>id;
cout<<"Municipio: "<<minas.getMunicipio(id).getNome()<<endl;
return 0;
}