Ajuda - Pesquisa habitantes [RESOLVIDO]

1. Ajuda - Pesquisa habitantes [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 16/02/2011 - 03:03h

1. Você esta fazendo uma pesquisa entre os habitantes de uma pequena vila. Escreva um programa que colete os dados de idade, sexo (M/F) e salário de todos as pessoas que desejam participar da pesquisa (para encerrar a entrada de dados entre a idade menor ou igual a zero). Após coletar todos os dados informe:
a. A média de salário do grupo
b. Maior e menor idade do grupo
c. A percentagem do total de mulheres com salário até R$ 300,00
d. A quantidade de homens

Fiz desta maneira só que esta com um pequeno erro na hora de mostrar o resultado final

http://pastebin.com/8AcEK7s2

O erro e que na hora do resultado final o programa não mostra a maior idade, menor idade, total de homens, mulheres
o programa simplesmente finaliza e não deixa entrar com novos valores.


  


2. MELHOR RESPOSTA

Mauricio Calligaris
MCalligaris

(usa Arch Linux)

Enviado em 18/02/2011 - 08:08h

Antes só gostaria de informar que eu não programo em C :O
Mas resolvi dar pitaco mesmo assim.

@rs23 vamos fazer como Jack The Ripper, vamos por partes.



Eu tive um professor de matemática que tinha a mania de dizer que a maioria dos problemas de alunos com a matemática são na verdade problemas de português. Vamos desconsiderar o fato de que ainda tenho problema com os dois :x e nos concentrar no seu programa :D

"para encerrar a entrada de dados entre a idade menor ou igual a zero"

No seu código você colocou assim:

while (idade >=0)

O problema dessa condição é que ela vai ser interpretada dessa maneira:

enquanto (idade for maior ou igual a zero)

Entretanto não queremos que o programa termine se a idade for igual ou menor que zero, para isso ocorrer basta mudar o while dessa maneira:

while (idade > 0)

agora o programa será interpretado da seguinte forma:

enquanto (idade for maior que zero)

agora em relação a porcentagem de mulheres com salario até 300

" if (sexo == 'F' && salario <= 300)
cont_mulher = cont_mulher + 1;
porcentagem_mulher = (porcentagem_mulher *100) / cont_mulher;"

Pelo menos ao que me parece o seu código está sendo interpretado assim:

Se (sexo é Feminino E salario menor ou igual a 300)
adiciona um ao contador de mulher
porcentagem de mulher é igual a (porcentagem de mulher * 100) dividido pelo contador de mulher

O que vai fazer com que o seu programa não funcione, principalmente por que vc está tentando calcular a porcentagem de mulheres que recebem salários de até R$300, todavia você só está contando as mulheres que estão nessa condição. Como eu já disse no começo não programo em C :x mas creio que você deva fazer algo mais ou menos assim:

"cont_mulher = cont_mulher + 1;
if (sexo == 'F' && salario <= 300)
cont_mulher300 = cont_mulher300 + 1;"

Você já deve ter reparado que eu retirei a linha do percentual, retirei ela por não achar conveniente fazer o percentual de mulheres ou o calculo de média de salários dentro do while. Se você deixar essas duas partes do código dentro do while e pesquisar 50 pessoas terá efetuado 50 vezes cada um deles, e vc só precisa fazer uma.

Espero que eu tenha conseguido ajudar pelo menos um pouco ;D

3. " Fiz desta maneira só que esta com um pequeno erro na hora de mostrar o resultado final"

André
andrezc

(usa Debian)

Enviado em 16/02/2011 - 06:13h

Então. Ninguém aqui tem bola de cristal. Diga que erro é esse. Dê também exemplos de entrada e saída, e poste também a saída esperada.


4. Re: Ajuda - Pesquisa habitantes [RESOLVIDO]

Franck Moreira
Delay

(usa Ubuntu)

Enviado em 16/02/2011 - 13:02h

Em seu codigo notei varios erros comuns, alguns deles são vc declarou variaveis floats e no entanto adiciona valores inteiros utiliza tambem tags para valores inteiros solução: declarar idade maior_idade, menor_idade, cont_mulher como int. Segundo a leitura do sexo se vc utiliza nos if's a entrada como maiuscula vc deve declara-las como maiuscula exemlo do seu codigo:if (sexo == 'M') como vc tera certeza que o usuario ira entrar com um caracter ja maiusculo para esses caso vc utilizar uma função chamada toupper que transformar caracter minusculo em maiusculo. outro erro que notei em menor_idade e maior_idade vc ja coloca valores neles, seria melhor fazer uma primeira leitura fora do laço que vc fez (que tambem esta errado!) e atribuir idade para essas variaveis e depois dentro do laço fazer as comparações que vc esta ja fazendo. Em seu laço vc utiliza o do e bom a entradada idade para encerrar esta em cima caso o usuario entre com o valor zero que eh para encerrar ele tera que inserir todos os dados como sexo e salario sugiro o uso do for e if para caso a entrada da idade seja zero sair do laço com o break e imprimir o resultado final. pronto eh isso! pelo menos para mim.


5. Re: Ajuda - Pesquisa habitantes [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 16/02/2011 - 15:51h

Corrigi o programa só que gostaria de interromper o programa
assim que o usuário entrar com um valor negativo.

http://pastebin.com/npYRkJqM


6. Re: Ajuda - Pesquisa habitantes [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 16/02/2011 - 16:10h

"Corrigi o programa só que gostaria de interromper o programa
assim que o usuário entrar com um valor negativo"

Nesse caso, a lógica é basicamente essa:

SE VALOR < 0 ENTÃO
INTERROMPE_PROGRAMA();


7. Re: Ajuda - Pesquisa habitantes [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 18/02/2011 - 02:16h

andrez

Coloquei o if e continua com erro.
Como abortar o programa de vez quando digitar uma idade negativa?


8. Re: Ajuda - Pesquisa habitantes [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 18/02/2011 - 06:13h

printf("Informe a idade do habitante: ");
scanf("%d", &idade);
if(idade < 0)
{
printf("Entre com uma idade valida.\n");
exit(1);
}


9. Re: Ajuda - Pesquisa habitantes [RESOLVIDO]

Franck Moreira
Delay

(usa Ubuntu)

Enviado em 18/02/2011 - 12:54h

Calligaris esta correto!

como vc quer obter a porcentagem de algo fazendo o codigo dessa
forma: if (sexo == 'F' && salario <= 300) cont_mulher = cont_mulher + 1, primeiro vc devera criar duas variaveis uma para contar o sexo 'F' e outra para contar as com sexo 'F' e que tenham salario menor que 300; depois multiplicar o total de mulheres por 100 e dividir pela quantidade de mulheres que recebem menos que 300 assim vc obtera a porcentagem. mais para finalizar com essa questão veja seu codigo corrigido nao tenho certeza se ira funfar : http://pastebin.com/2Q08Qu4H


10. Re: Ajuda - Pesquisa habitantes [RESOLVIDO]

Gustavo
rs23

(usa Ubuntu)

Enviado em 20/02/2011 - 00:37h

Obrigado a todos que me ajudaram

problema resolvido






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts