Ir ao conteúdo

Ajuda exercicio simples.


blum4n

Posts recomendados

Postado

Ola, boa noite, estou com dificuldades para concluir um exercicio da prova do professor de logica de programacao.

ENUNCIADO:

1) Uma empresa decidiu fazer um levantamento em releção aos candidatos que se apresentarem para preenchmento de vagas no no seu quadro de funcionários.

Supondo que você seja o programador dessa empresa, faa um progframa que leia para cada candidato a idade, o sexo (mou F) e a experiência no serviço sendo 1 (sim) ou 2(não).

No final da execução mostrar os itens abaixo.

*numero de candidatos do sexo feminino.

*numero de candidatos do sexo masculino.

*a media da idade dos homen que já tem experiência no serviço.

*numero de mulheres com idade inferior a 35 anos com experiência no serviço

Consegi montar o proble sem dificuldade... segue o codigo. obs:editei o codigo para ficar mais claro as informações.

#include <stdio.h>
main () {
int idade, experiencia,numero_fem=0,numero_masc=0,media_hom=0,fem_menor35_comexp=0,total_id_masc_exp=0,total_masc_exp=0;
char sexo,cont='S';
while (cont=='S' || cont=='s') {
printf ("informe a idade do candidato \n");
scanf ("%i", &idade);
printf ("informe o sexo F/M \n");
scanf ("%s", &sexo);
printf ("se tiver experiencia digite 1 \nse nao tiver experiencia digite 2 \n");
scanf ("%i", &experiencia);
if (sexo=='F' || sexo=='f') {
numero_fem++;
}
else {
numero_masc++;
}
if (sexo=='M' || sexo=='m' && experiencia==1) {
total_id_masc_exp+=idade;
total_masc_exp++;
media_hom=total_id_masc_exp/total_masc_exp;
}
else if (sexo=='F' || sexo=='f' && idade 5 && experiencia==1) {
fem_menor35_comexp++;
}
printf (" deseja continuar? S/N\n");
scanf ("%s", &cont);
}
printf ("total idade masculina com experiencia e %i\n", total_id_masc_exp);
printf ("total de homen com experiencia e %i\n", total_masc_exp);
printf ("numero de candidatos feminios e %i\n", numero_fem);
printf ("numero de candidatos masculinos e %i\n", numero_masc);
printf ("a media da idade de homens com experiencia e %i\n", media_hom);
printf ("numero de mulheres com menos de 35 com experiencia e %i\n", fem_menor35_comexp);
system ("pause");
}

O erro esta na hora de salvar a quantida de homen com experiencia, na linha

 if (sexo=='M' || sexo=='m' && experiencia==1) {
total_id_masc_exp+=idade;
total_masc_exp++;
media_hom=total_id_masc_exp/total_masc_exp;
}

independente de qts vezes eu digite homen com experiencia ele deixa fixo o valor de 1 pra variavel "total_masc_exp++;" criada para acumular a quantidade de homens com experiencia.

lembrando que todas as variaveis estão salvando corretamente os valores inclusive a " total_id_masc_exp+=idade;" e "media_hom=total_id_masc_exp/total_masc_exp;" que estão na mesma condição, somente a "total_masc_exp++;" que não esta acumulando valor.

se alguem puder ajudar agradeço..

obrigado

Att,

Ricardo alcantara

Postado

Na linha onde você lê o sexo, você está lendo uma string, e não um char (strings são terminadas em '\0'). troque o scanf ("%s", &sexo); por scanf (" %c", &sexo);. Provavelmente o buffer está ficando com algum lixo depois da primeira iteração e você está comparando esse lixo (como um ENTER, por exemplo) ao seu const char.

Espero ter ajudado.

ZaZ.

Postado

bom dia, fiz um bem parecido, veja onde esta seu erro.


#include<stdio.h>
#include<stdlib.h>
#include <conio.h>

int main(){

int idade, mulheres, homens;
int homens_acima , mulheres_abaixo , menor_idade , soma_idades_com_exp , com_exp;
char sexo, experiencia;
float porcentagem , idade_media;

printf("Qual o sexo do candidato? (m/f)\n");
fflush(stdin);
sexo = getche();
printf("\nO candidato já tem experiência no serviço? (s/n)\n");
fflush(stdin);
experiencia = getche();
printf("\nQual é a idade do candidato?\n");
scanf("%d", &idade);

while (idade != 0) {
if (sexo == 'f') {
mulheres = mulheres + 1;
if((idade <=35 ) && ( experiencia =='s'))
mulheres_abaixo = mulheres_abaixo + 1;
if ( experiencia == 's' ) {
if (( idade < menor_idade ) &&( menor_idade == 0 ))
menor_idade = idade;
}
}
else {
homens = homens + 1;
if ( idade > 45 ){
homens_acima = homens_acima + 1;
if ( experiencia == 's' )
soma_idades_com_exp = soma_idades_com_exp + idade;
com_exp = com_exp + 1;
}
}


printf("Qual o sexo do proximo candidato? (m ou f)\n");
fflush(stdin);
experiencia = getche();
printf("Esse candidato ja tem experiência no serviço? (s/n)\n");
fflush(stdin);
experiencia = getche();
printf("Qual e a idade desse candidato? (Digite 0 (zero) se não houver mais candidatos)\n");
scanf("%d",&idade);

idade_media = soma_idades_com_exp / com_exp;

porcentagem = homens_acima / homens * 100;

printf("\n\nNumero de candidatos do sexo feminino:%s\n " , mulheres);
printf( "\n\nNumero de candidatos do sexo masculino:%s\n " , homens);
printf("\n\nA idade média dos homens que já têm experiência no serviço:%d\n " , idade_media);
printf("\n\nA porcentagem dos homens com mais de 45 anos entre o total dos homens:%d\n " , porcentagem , "%");
printf("\n\nO numero de mulheres com idade inferior a 35 anos e com experiência no serviço:%d\n " , mulheres_abaixo);
printf("\n\nA menor idade entre as mulheres que já têm experiência no serviço:%d\n " , menor_idade);
}
system("pause");
}

Postado
Na linha onde você lê o sexo, você está lendo uma string, e não um char (strings são terminadas em '\0'). troque o scanf ("%s", &sexo); por scanf (" %c", &sexo);. Provavelmente o buffer está ficando com algum lixo depois da primeira iteração e você está comparando esse lixo (como um ENTER, por exemplo) ao seu const char.

Espero ter ajudado.

ZaZ.

ao utilizar scanf ("%c", &sexo) o programa nao funciona corretamente, ele nao deixa o usuario digitar o sexo e pula para o proximo printf que captura experiencia.

e outra todas as variaveis estão salvando seus respectivos valores da forma correta, somente a variavel hom que nao esta...

agradeço a ajuda.

mas até agora nada.

Postado
bom dia, fiz um bem parecido, veja onde esta seu erro.


#include<stdio.h>
#include<stdlib.h>
#include <conio.h>

int main(){

int idade, mulheres, homens;
int homens_acima , mulheres_abaixo , menor_idade , soma_idades_com_exp , com_exp;
char sexo, experiencia;
float porcentagem , idade_media;

printf("Qual o sexo do candidato? (m/f)\n");
fflush(stdin);
sexo = getche();
printf("\nO candidato já tem experiência no serviço? (s/n)\n");
fflush(stdin);
experiencia = getche();
printf("\nQual é a idade do candidato?\n");
scanf("%d", &idade);

while (idade != 0) {
if (sexo == 'f') {
mulheres = mulheres + 1;
if((idade <=35 ) && ( experiencia =='s'))
mulheres_abaixo = mulheres_abaixo + 1;
if ( experiencia == 's' ) {
if (( idade < menor_idade ) &&( menor_idade == 0 ))
menor_idade = idade;
}
}
else {
homens = homens + 1;
if ( idade > 45 ){
homens_acima = homens_acima + 1;
if ( experiencia == 's' )
soma_idades_com_exp = soma_idades_com_exp + idade;
com_exp = com_exp + 1;
}
}


printf("Qual o sexo do proximo candidato? (m ou f)\n");
fflush(stdin);
experiencia = getche();
printf("Esse candidato ja tem experiência no serviço? (s/n)\n");
fflush(stdin);
experiencia = getche();
printf("Qual e a idade desse candidato? (Digite 0 (zero) se não houver mais candidatos)\n");
scanf("%d",&idade);

idade_media = soma_idades_com_exp / com_exp;

porcentagem = homens_acima / homens * 100;

printf("\n\nNumero de candidatos do sexo feminino:%s\n " , mulheres);
printf( "\n\nNumero de candidatos do sexo masculino:%s\n " , homens);
printf("\n\nA idade média dos homens que já têm experiência no serviço:%d\n " , idade_media);
printf("\n\nA porcentagem dos homens com mais de 45 anos entre o total dos homens:%d\n " , porcentagem , "%");
printf("\n\nO numero de mulheres com idade inferior a 35 anos e com experiência no serviço:%d\n " , mulheres_abaixo);
printf("\n\nA menor idade entre as mulheres que já têm experiência no serviço:%d\n " , menor_idade);
}
system("pause");
}

Calma amigo nao pega pesado comigo nao... rs

estou no primeiro semestre ainda de ADS nao entendi muita coisa de como fez,

mas agradeço a ajuda.

se puder me dizer o porque de minha variavel "hom" nao estar acumulando +1 a cada vez que acondição é verdadeira agradeço...

obrigado, mas ainda preciso de ajuda.

Postado
ao utilizar scanf ("%c", &sexo) o programa nao funciona corretamente, ele nao deixa o usuario digitar o sexo e pula para o proximo printf que captura experiencia.

e outra todas as variaveis estão salvando seus respectivos valores da forma correta, somente a variavel hom que nao esta...

agradeço a ajuda.

mas até agora nada.

Utilize o scanf(" %c", &sexo); com o espaço antes do '%', para evitar esse problema.

Postado
Utilize o scanf(" %c", &sexo); com o espaço antes do '%', para evitar esse problema.

Opa.. muito obrigado amigo,era esse mesmo o problema, eu nunca imaginei que deveria usar um espaço ali... onde eu posso saber saber mais sobre isso?

obrigado.

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...