Mary15 0 Denunciar post Postado Fevereiro 20, 2013 #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
GBecker 51 Denunciar post Postado Fevereiro 20, 2013 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
Mary15 0 Denunciar post Postado Fevereiro 20, 2013 Quero uma explicação sobre o codigo? Quero uma explicação sobre o codigo? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Fevereiro 20, 2013 Você já executou ou fez teste de mesa? Porque é basicamente isso que precisa ser feito. Compartilhar este post Link para o post Compartilhar em outros sites