Ir ao conteúdo

Posts recomendados

Postado

Olá, ao executar o programa ele printa a linha da função lersexo(); duas vezes. Alguém sabe me dizer por quê? O restante está funcionando como deveria.

Obrigado pela atenção.

 

Artur Simon

#include <stdio.h>
#define ALUNOS 3

char lersexo()
{
    char sexo;
    do
    {
        printf("Sexo(m ou f): ");
        scanf("%c", &sexo);
    }
    while (sexo != 'm' && sexo != 'f');
    return sexo;
}

int leridade()
{
    int idade;
    do
    {
        printf("Idade(6 a 16): ");
        scanf("%d", &idade);
    }
    while (idade > 16 || idade < 6);
    return idade;
}

int main()
{
    int i, masc = 0, fem = 0, idade;
    char sexo;
    float media = 0;

    for(i=0; i<ALUNOS; i++)
    {
        sexo = lersexo();
        if (sexo == 'm')
            masc = masc + 1;
        else
            fem = fem + 1;
        media = media + leridade();

    }
    printf("Numeros de alunos do sexo masculino: %d\n", masc);
    printf("Numeros de alunos do sexo feminino: %d\n", fem);
    printf("Media de idade dos alunos: %f\n", media/ALUNOS);

}

 

  • Curtir 1
Postado
2 horas atrás, Artur Simon disse:

Olá, ao executar o programa ele printa a linha da função lersexo(); duas vezes. Alguém sabe me dizer por quê? O restante está funcionando como deveria.

Obrigado pela atenção.

 

Artur Simon


#include <stdio.h>
#define ALUNOS 3

char lersexo()
{
    char sexo;
    do
    {
        printf("Sexo(m ou f): ");
        scanf("%c", &sexo);
    }
    while (sexo != 'm' && sexo != 'f');
    return sexo;
}

int leridade()
{
    int idade;
    do
    {
        printf("Idade(6 a 16): ");
        scanf("%d", &idade);
    }
    while (idade > 16 || idade < 6);
    return idade;
}

int main()
{
    int i, masc = 0, fem = 0, idade;
    char sexo;
    float media = 0;

    for(i=0; i<ALUNOS; i++)
    {
        sexo = lersexo();
        if (sexo == 'm')
            masc = masc + 1;
        else
            fem = fem + 1;
        media = media + leridade();

    }
    printf("Numeros de alunos do sexo masculino: %d\n", masc);
    printf("Numeros de alunos do sexo feminino: %d\n", fem);
    printf("Media de idade dos alunos: %f\n", media/ALUNOS);

}

 

Olá, realmente funcionou, mas não consigo entender por que hahahhaa, não faz nenhum sentido na minha cabeça esse espaço, o que o computador entende dele?

  • Curtir 2
Postado
11 horas atrás, Artur Simon disse:

o que o computador entende dele?

É um sinal para a função scanf. Ela entende que todos os caracteres de tabulação (exemplo o de nova linha '\n') enquanto inicialmente existirem no fluxo deve ser ignorados. Esse caracteres '\n' sempre sobra no fluxo de entrada. Ele vem do último ENTER pressionado.

  • Curtir 2
  • Amei 1
Postado

Olá, @AnsiC Estamos aí novamente.

Ao que parece tudo resolvido, e melhor do q esperado até, pois nem recebi nenhuma exortação rs... (e espero não receber)

Só passei para dar um olá e deixar um forte abraço! 😛

Pra você e toda essa "tropa" de convertedores de cafeína em código:  @devair @isrnick e Cia

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!