Ir ao conteúdo
  • Cadastre-se

Dificuldade com estrutura While


Bruno Tinelli

Posts recomendados

Para resolvi o exercício:

A prefeitura de uma cidade resolveu fazer uma pesquisa entre os seus trabalhadores. Para isso ela coletou alguns dados como idade, sexo (M ou F) e salário. Faça um programa que Leia estes dados e que escreva ao final:

A média salarial dos homens, a média salarial das mulheres

O maior salário encontrado entre as pessoas abaixo de 30 anos.

Obs: O final da leitura de dados é marcado por uma idade negativa.

Fiz um programa em C:


#include<stdio.h>
int main()
{
int idade,contm,contf;
float sal,salm=0,somam,somaf;
char sexo;

while(idade!=0)
{
printf("Informe o sexo: ");
scanf("%c", &sexo);
printf("\n");
printf("Informe a idade: ");
scanf("%d", &idade);
printf("\n");
printf("Informe o salario: ");
scanf("%f", &sal);

//Media salarial de homens e mulheres.
if(sexo=='m' || sexo=='M')
{
somam=somam+sal;
contm++;
}
else
{
somaf=somaf+sal;
contf++;
}

if(idade<30 && sal>salm)
{
salm=sal;
}
}
printf("Media salarial das mulheres:\n ",somaf/contf);
printf("Media salarial dos homens:\n ",somam/contm);
printf("Maior salario: \n",salm);
}

Estou com dois problemas:

1-Não gera os resultados.

2-Enquanto está no laço While todas as perguntas aparecem juntas, uma embaixo da outra.

Valeu galera.

Eu uso o DEV-C++

Link para o comentário
Compartilhar em outros sites

Bom, sobre estar "sujo" o seu buffer (é o que faz aparecer todas as perguntas juntas) coloque um espaço depois do sexo...

ex:

printf("Qual seu sexo? ");

scanf("%c", &sexo);

printf("Sua idade? ");

scanf(" %d", &idade);

antes de entrar no while zere as variaveis que não vão ser "mexidas" como contm, contf, somam e o somaf (caso não o faça, provavelmente você vai ver valores bem estranhos na tela... se chama "lixo", um valor gerado aleatoriamente já que não foi posto nenhum valor lá dentro.. nunca... o somam=somam+sal está certo, mas o fato do valor anterior do somam ser um lixo, isso irá deixar o novo somam com lixo+sal... mesma coisa vale para somaf)

coloque assim:

if(sexo=='m' ....)

...

else if(sexo=='f'...)

...

else

printf("Nenhum sexo valido foi posto\n");

pois, do contrario, uma letra estranha seria ir para f, somaf, etc..

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...