Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mary15

explicar um codigo em c++

Recommended Posts


#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <math.h>

using namespace std;

int soma_array(int array[86])
{
int soma=0;
for(int i=0;i<86;i++)
{
soma = soma + array[i];
}
return soma;
}
double taxa_desemprego(int p_desempregada, int p_activa, bool percentagem)
{
if(percentagem) return (p_desempregada*pow(p_activa,-1)*100);
else return (p_desempregada*pow(p_activa,-1));
}
double media(int xi[86])
{
int total;
total = soma_array(xi);

return (total*pow(86,-1));
}
int main()
{
int total_residentes[86];
int total_homens[86];
int total_mulheres[86];
int total_desempregados[86];
int total_homens_desempregados[86];
int total_mulheres_desempregados[86];
string concelhos[86], linha_concelhos[86], temp;
string linha;
int posicao1, posicao2, posicao3, posicao4, posicao5, posicao6, total,tmp,i;
int max=0, min=0;
size_t posicao;
double taxa_d[86],temp_taxa;
std::istringstream in;

ifstream meuFich("DesempregoINE_Norte.txt");
if (meuFich.is_open())
{
while(meuFich.good())
{
getline(meuFich,linha);
posicao1 = linha.find(';');
posicao2 = linha.find(';',posicao1+1);
posicao3 = linha.find(';',posicao2+1);
posicao4 = linha.find(';',posicao3+1);
posicao5 = linha.find(';',posicao4+1);
posicao6 = linha.find(';',posicao5+1);
if(posicao1 != string::npos)
{
linha = linha.substr(posicao6+1);
in.str(linha);
in >> total_mulheres_desempregados[i];
in.clear();
linha.erase(posicao6);

linha= linha.substr(posicao5+1);
in.str(linha);
in >> total_homens_desempregados[i];
in.clear();
linha.erase(posicao5);

linha= linha.substr(posicao4+1);
in.str(linha);
in >> total_desempregados[i];
in.clear();
linha.erase(posicao4);

linha = linha.substr(posicao3+1);
in.str(linha);
in >> total_mulheres[i];
in.clear();
linha.erase(posicao3);

linha = linha.substr(posicao2+1);
in.str(linha);
in >> total_homens[i];
in.clear();
linha.erase(posicao2);

linha = linha.substr(posicao1+1);
in.str(linha);
in >> total_residentes[i];
in.clear();
linha.erase(posicao1);
concelhos[i] = linha;
i++;
}

else cout << "Erro!\n\n";
}

}
total = i;
meuFich.close();
for(int i=0;i<86;i++)
{
taxa_d[i] = taxa_desemprego(total_desempregados[i],total_residentes[i],0);
linha_concelhos[i] = concelhos[i];
}

cout << "\nAlinea 1)\n";
for(int i = 0;i<total;i++)
{
cout <<concelhos[i] << endl;
cout <<"Total: " << taxa_desemprego(total_desempregados[i],total_residentes[i],1)<<"%"<<endl;
cout <<"Homens: " << taxa_desemprego(total_homens_desempregados[i],total_homens[i],1)<<"%"<<endl;
cout <<"Mulheres: " << taxa_desemprego(total_mulheres_desempregados[i],total_mulheres[i],1)<<"%"<<endl;
cout << endl;
}

system("PAUSE");

cout << "\nAlinea 2)\n\n";
cout << "Taxa de desemprego na regiao norte: " << soma_array(total_desempregados)*pow(soma_array(total_residentes),-1) *100 << "%" << endl<<endl;

system("PAUSE");

cout << "\nAlinea 3)\n\n";
for(int i=0;i<total;i++)
{
if(taxa_desemprego(total_homens_desempregados[max],total_homens[max],0) < taxa_desemprego(total_homens_desempregados[i],total_homens[i],0)) max = i;
if(taxa_desemprego(total_mulheres_desempregados[min],total_mulheres[min],0) > taxa_desemprego(total_mulheres_desempregados[i],total_mulheres[i],0)) min = i;
}

cout << "concelho com maior taxa de desemprego nos homens: "<< concelhos[max]<<endl<<endl;
cout << "concelho com melhor desempenho entre as mulheres: "<< concelhos[min]<<endl<<endl;

system("PAUSE");

cout << "\nAlinea 4)\n\n";

cout << "Concelhos por ordem decrescente de total de populacao residente\n\n";

for(int i=0;i<86;i++)
{
for(int j=0;j<86-i-1;j++)
{
if(total_residentes[j] < total_residentes[j+1])
{
temp = concelhos[j+1];
concelhos[j+1] = concelhos[j];
concelhos[j] = temp;
temp.clear();

tmp = total_residentes[j+1];
total_residentes[j+1] = total_residentes[j];
total_residentes[j] = tmp;
}
}
}

for (int i=0;i<86;i++) cout << concelhos[i] <<endl;

system("PAUSE");

cout << "Concelhos por ordem crescente de taxa de desemprego (populacao total)\n\n";

for(int i=0;i<86;i++)
{
for(int j=0;j<86-i;j++)
{
if(taxa_d[j+1] > taxa_d[j])
{
temp = linha_concelhos[j+1];
linha_concelhos[j+1] = linha_concelhos[j];
linha_concelhos[j] = temp;
temp.clear();

temp_taxa = taxa_d[j+1];
taxa_d[j+1] = taxa_d[j];
taxa_d[j] = temp_taxa;
}
}
}

system("PAUSE");

cout << "\nAlinea 6)\n\n";
cout << "media de populacao desempregada na regiao norte: " << media(total_desempregados) << endl <<endl;

system("PAUSE");
return EXIT_SUCCESS;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou vago o que você quer. Tem alguma dúvida específica sobre a linguagem ou quer uma explicação sobre algorítmo do TEU código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.