A maior rede de estudos do Brasil

Por favor, me ajudem a ver o que eu tô errando nesse programa?

É um programa pra calcular a quanidade de homens e mulheres num grupo de 10 pessoas, o programa roda,mas o problema é que só calcula até 6 e eu não consigo encontrar o erro. Desde já agradeço a quem puderme ajudar. Segue o código:

#include<stdio.h>
int main ( ){
int x;
int fem=0;
int masc=0;
char s='\0';

for (x=0;x<=10;x++){
printf ("\n\ndigite o sexo do aluno, f ou m:\n\n");
scanf ("%c",&s);

switch (s){
case 'm':
masc++;
break;

case 'f':
fem++;
break;


default:
printf ("somente letras f e m");

}


}
printf ("numero de homens:%d e onumero de mulheres:%d",masc,fem);


return (0);

}


4 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Existem dois possíveis erros neste programa. Um no laço de repetição e outro no scanf.


O primeiro refere-se a sintaxe no for, assim devemos substitui-lo da seguinte forma.

For(x=0;x<10;x++){


Já no segundo erro, quando se trata de variáveis do tipo char, é necessário um cuidado a mais, principalmente quando se utiliza o scanf.


Assim, quando damos ‘enter’ no teclado após inserir a resposta F ou M, esse ‘enter’ preenche a variável na próxima interação, fazendo com que o programa receba apenas a metade das entradas.


Assim, para o segundo erro, devemos substituir o scanf da seguinte forma.

scanf("\n%c",&s);

Existem dois possíveis erros neste programa. Um no laço de repetição e outro no scanf.


O primeiro refere-se a sintaxe no for, assim devemos substitui-lo da seguinte forma.

For(x=0;x<10;x++){


Já no segundo erro, quando se trata de variáveis do tipo char, é necessário um cuidado a mais, principalmente quando se utiliza o scanf.


Assim, quando damos ‘enter’ no teclado após inserir a resposta F ou M, esse ‘enter’ preenche a variável na próxima interação, fazendo com que o programa receba apenas a metade das entradas.


Assim, para o segundo erro, devemos substituir o scanf da seguinte forma.

scanf("\n%c",&s);

User badge image

Eduardo

Há mais de um mês

Oi Marina, veja no exemplo abaixo (que é o teu mesmo com algumas modificações)

a) quando vc usa o scanf, precisa tb usar um outro para "pegar" o enter...;

b) o break quebra o loop do for, então usei while pq qdo não é nem f e nem m, vc tem que voltar o contador ( x--) senão vai pegar menos q 10 entradas;

c) eu usei o DEV C++.

Espero ter ajudado. Boa sorte!

c)

#include<stdio.h>
int main ( ){
int x=0;
int fem=0;
int masc=0;
char s;
printf ("\n\ndigite o sexo do aluno, f ou m:\n\n");
/*for (x=0;x<=10;x++);*/
while (x<10)
{
scanf ("%c",&s);
switch(s)
{
case 'm':
masc++;
scanf ("%c",&s);
break;
case 'f':
fem++;
scanf ("%c",&s);
break;
default: printf("\n\n Opcao nao valida, somente letras f e m ");
x--;
scanf ("%c",&s);
}
x++;}

printf ("numero de homens:%d e o numero de mulheres:%d",masc,fem);

return (0);
}

User badge image

Andre

Há mais de um mês

Existem dois possíveis erros neste programa. Um no laço de repetição e outro no scanf.


O primeiro refere-se a sintaxe no for, assim devemos substitui-lo da seguinte forma.

For(x=0;x<10;x++){


Já no segundo erro, quando se trata de variáveis do tipo char, é necessário um cuidado a mais, principalmente quando se utiliza o scanf.


Assim, quando damos ‘enter’ no teclado após inserir a resposta F ou M, esse ‘enter’ preenche a variável na próxima interação, fazendo com que o programa receba apenas a metade das entradas.


Assim, para o segundo erro, devemos substituir o scanf da seguinte forma.

scanf("\n%c",&s);

User badge image

Andre

Há mais de um mês

Existem dois possíveis erros neste programa. Um no laço de repetição e outro no scanf.


O primeiro refere-se a sintaxe no for, assim devemos substitui-lo da seguinte forma.

For(x=0;x<10;x++){


Já no segundo erro, quando se trata de variáveis do tipo char, é necessário um cuidado a mais, principalmente quando se utiliza o scanf.


Assim, quando damos ‘enter’ no teclado após inserir a resposta F ou M, esse ‘enter’ preenche a variável na próxima interação, fazendo com que o programa receba apenas a metade das entradas.


Assim, para o segundo erro, devemos substituir o scanf da seguinte forma.

scanf("\n%c",&s);

Essa pergunta já foi respondida por um dos nossos especialistas