Ir ao conteúdo
  • Cadastre-se

Onde esta o erro neste exercicio em C ?


nexus.tecinfo

Posts recomendados

Bom dia galera conectada,

estou fazendo um exercicio e esta dando um erro que não sei corrigir, poderiam dar uma olhada e me informar o erro?

Agradeço desde já.


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

int main(){


int idade , mulheres , homens , 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");
scanf("%c",&sexo);
printf("O candidato já tem experiência no serviço? (s/n)\n");
scanf("%c",&experiencia);
printf("Qual é 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");
scanf("%c",&sexo);
printf("Esse candidato ja tem experiência no serviço? (s/n)\n");
scanf("%c",&experiencia);
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\nNúmero de candidatos do sexo feminino:%c\n " , m);
printf( "\n\nNúmero de candidatos do sexo masculino:%c\n " , h);
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 número 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");
}

Link para o comentário
Compartilhar em outros sites

LucasLks, este erro eu arrumei, mais ele da erro no seguinte local


[COLOR="Red"]printf("Qual o sexo do proximo candidato? (m ou f)\n"); // expected constructor, destructor, or type conversion before '(' token [/COLOR]
scanf("%c",&sexo);
printf("Esse candidato ja tem experiência no serviço? (s/n)\n");
scanf("%c",&experiencia);
printf("Qual e a idade desse candidato? (Digite 0 (zero) se não houver mais candidatos)\n");
scanf("%d",&idade);

Link para o comentário
Compartilhar em outros sites

Utilize o código abaixo e veja se esta correto... o erro era em algumas chaves mal posicionadas e falta de ";" no final do while, teste e veja se agora esta correto!

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

int main(){


int idade , mulheres , homens , 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");
scanf("%c",&sexo);
printf("O candidato já tem experiência no serviço? (s/n)\n");
scanf("%c",&experiencia);
printf("Qual é 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");
scanf("%c",&sexo);
printf("Esse candidato ja tem experiência no serviço? (s/n)\n");
scanf("%c",&experiencia);
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\nNúmero de candidatos do sexo feminino:%c\n " , mulheres);
printf( "\n\nNúmero de candidatos do sexo masculino:%c\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 número 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");
}

Link para o comentário
Compartilhar em outros sites

guiasp, ainda não esta dando certo, abree o programa mais quando digita a primeira linha, junta duas perguntas: O candidato já tem experiência no serviço? (s/n) e "Qual é a idade do candidato? e para de rodar... , eu troquei o


%c

por

 %s 

ele passou, mais não esta descendo, não tem como digitar mais nada, como se não estivsse passando pelo while...

Link para o comentário
Compartilhar em outros sites

Ghost Killer, eu tirei os ponto e virgula dos if, que alias foi bobeira minha, coisa tosca mesmo, arrumei as chaves dos if e ainda não compila.


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

int main(){


int idade , mulheres , homens , 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");
scanf("%s",&sexo);
printf("O candidato já tem experiência no serviço? (s/n)\n");
scanf("%s",&experiencia);
printf("Qual é 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");
scanf("%s",&sexo);
printf("Esse candidato ja tem experiência no serviço? (s/n)\n");
scanf("%s",&experiencia);
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\nNúmero de candidatos do sexo feminino:%s\n " , mulheres);
printf( "\n\nNúmero 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 número 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");
}

Link para o comentário
Compartilhar em outros sites

Bom dia,

Sinceramente, não entendi muito bem o código.

O que eu reparei que estava errado era a abertura e fechamento de chaves, ou seja, os if's e else's estavam errados.

Você abria um, mas não fechava.

As vezes a quantidade de fechamento estava correta, por isso não dava erro, mas no fim, dava problema porque a lógica dos if's estavam erradas.

Fora que char é melhor você tratar com uma função específica: "getche"

Você também estava tratando o char como se fosse um valor numérico.

Como assim?


scanf("%s",&sexo);

Esse "&" diz que é um valor numérico.

Segue o código.

Precisa dar uma melhorada no código também. Vi apenas o básico, mas está meio complicado aqui no serviço.

Quando tiver um tempo posto o código melhor estruturado.


#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\nNúmero de candidatos do sexo feminino:%c\n " , mulheres);
printf( "\n\nNúmero de candidatos do sexo masculino:%c\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 número 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");
}

Link para o comentário
Compartilhar em outros sites

miltonlp Bom dia,


Fora que char é melhor você tratar com uma função específica: "getche"
Você também estava tratando o char como se fosse um valor numérico.
Como assim?


scanf("%s",&sexo);

quando eu coloquei o

 ("%c",&sexo), 

e digitava ( m ou f) ele pulava a pergunta da experiencia e estava indo para da idade, mudei para

scanf("%s",&sexo);

ai sim estava lendo as perguntas...

a respeito do codigo, não esta mostrando os valores certos, irei verificar onde esta os erros e tentar arrumar. Agradeço pela ajuda.

Bom trabalho ae no seu serviço ;)

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