Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

1. Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

Domingos Marques da Silva
DomingosMarques

(usa Ubuntu)

Enviado em 18/05/2016 - 08:46h

Preciso entregar esse trabalho hoje, mais nao consigo com que o programa conte o sexo feminino, mais com o mesmo código a a variável com o sexo masculino ta funcionando normalmente. Se alguem puder me ajudar eu agradeço muito...


char sexo ;
int rok=0, sexom=1, sexof=1;
int i;




do {

rok = 1;

printf("\nENTRE COM M PARA MASCULINO OU F PARA FEMININO OU E PARA SAIR:\n ");
scanf("%s", &sexo);
sexo = tolower(sexo);

if(sexo != 'f' && sexo != 'm')
{
printf("ERRO: DIGITE APENAS M OU F! ");
rok = 0;
}
}while(!rok);

if (sexo == 'f')

printf("A QUANTIDADE DE PESSOAS DE SEXO FEMININO EH:%d\n ",sexof++);





if (sexo == 'm')
printf("A QUANTIADADE DE PESSOAS DE SEXO MASCULINO EH:%d\n ",sexom++);



} while(sexo!='E' && sexo !='e');



system("PAUSE");
return 0;

}


  


2. Confuso, mas tranquilo e favorável

Diego Henrique Sampaio de Souza
AboutDiego

(usa Fedora)

Enviado em 18/05/2016 - 09:08h

DomingosMarques escreveu:

Preciso entregar esse trabalho hoje, mais nao consigo com que o programa conte o sexo feminino, mais com o mesmo código a a variável com o sexo masculino ta funcionando normalmente. Se alguem puder me ajudar eu agradeço muito...


char sexo ;
int rok=0, sexom=1, sexof=1;
int i;




do {

rok = 1;

printf("\nENTRE COM M PARA MASCULINO OU F PARA FEMININO OU E PARA SAIR:\n ");
scanf("%s", &sexo);
sexo = tolower(sexo);

if(sexo != 'f' && sexo != 'm')
{
printf("ERRO: DIGITE APENAS M OU F! ");
rok = 0;
}
}while(!rok);

if (sexo == 'f')

printf("A QUANTIDADE DE PESSOAS DE SEXO FEMININO EH:%d\n ",sexof++);





if (sexo == 'm')
printf("A QUANTIADADE DE PESSOAS DE SEXO MASCULINO EH:%d\n ",sexom++);



} while(sexo!='E' && sexo !='e');



system("PAUSE");
return 0;

}



Domingos, acho que o seu problema é esse trecho de código aqui:

            
if(sexo != 'f' && sexo != 'm')
{
printf("ERRO: DIGITE APENAS M OU F! ");
rok = 0;
}
}while(!rok);


Está faltando um "do" no seu código, pois existem dois trechos de do{}while(); e existe apenas um do{}while(); realmente. acredito que esse trecho deveria ficar


do{
do{
rok = 1;

printf("\nENTRE COM M PARA MASCULINO OU F PARA FEMININO OU E PARA SAIR:\n ");
scanf("%s", &sexo);
sexo = tolower(sexo);

if(sexo != 'f' && sexo != 'm')
{
printf("ERRO: DIGITE APENAS M OU F! ");
rok = 0;
}
}while(!rok);

// Restante do seu código


Outra coisa, na sua pergunta, você digita tudo em maiúsculo, sendo que compara com letras minusculas, isso confunde o usuário, se quiser você pode fazer como fez para validar a saída (E ou e) ou então limitar realmente a letras minusculas.

printf("\nENTRE COM m PARA MASCULINO OU f PARA FEMININO OU E PARA SAIR:\n ");

E mais uma sugestão, se você está validando logo ali a saída, poderia existir um


if(sexo == 'E' || sexo == 'e'){
rok = 1;
break;
}
else if(sexo != 'f' && sexo != 'm')
{
printf("ERRO: DIGITE APENAS M OU F! ");
rok = 0;
}



São apenas sugestões =p.


3. Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

Domingos Marques da Silva
DomingosMarques

(usa Ubuntu)

Enviado em 18/05/2016 - 09:53h

Askra, suas sugestões são muito bem vindas eu aceito todas uma vez que tou começando com programação, valew msmo.
o outro problema eh na hora de exibir o sexo masculino e feminino, o programa conta o sexo masculino normal , mais o feminino não... eu já arrumei os pontos que você falou e não funciona. não sei qual é a sua disponibilidade mais se puder me ajudar mais nisso te agradeço desde já.


4. Re: Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

Diego Henrique Sampaio de Souza
AboutDiego

(usa Fedora)

Enviado em 18/05/2016 - 10:09h

Veja se assim te ajuda.

char sexo ;
int rok=0, sexom=0, sexof=0;
int i;

do {

do{
rok = 1;

printf("\nENTRE COM M PARA MASCULINO OU F PARA FEMININO OU E PARA SAIR:\n ");
scanf("%c", &sexo);
sexo = tolower(sexo);

if(sexo == 'e'){
// em resumo, faz o código sair desse dowhile
break;
}

if(sexo != 'f' && sexo != 'm')
{
printf("ERRO: DIGITE APENAS M OU F! ");
rok = 0;
}
}while(!rok);

if (sexo == 'f'){
sexof++;
printf("A QUANTIDADE DE PESSOAS DE SEXO FEMININO EH:%d\n ",sexof);
}

if (sexo == 'm'){
sexom++;
printf("A QUANTIADADE DE PESSOAS DE SEXO MASCULINO EH:%d\n ",sexom);
}

// Como existe o tolower, não precisa validar se é E
} while(sexo != 'e');



system("PAUSE");
return 0;

}



5. Re: Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/05/2016 - 12:44h

Se o o código em C que você está desenvolvendo/testando for rodar no Linux, por favor, tire a linha system("PAUSE");; pause é um comando que funciona apenas no Windows e só serve para "pausar" o prompt, de modo que, no caso de um programa que rode sobre ele, só seja encerrado depois que alguma tecla seja pressionada. No Linux só serve para seu terminal responder "comando não encontrado"


6. Re: Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/05/2016 - 12:56h

Para isto pode-se usar getc() ou apelar para algo de BASH como sleep ou read.

----------------------------------------------------------------------------------------------------------------
# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



7. Re: Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/05/2016 - 17:34h

listeiro_037 escreveu:

Para isto pode-se usar getc() ou apelar para algo de BASH como sleep ou read.


Seria desperdício criar um novo processo e executar um comando externo só para fazer uma pausa dessas. Se é para chamar system("sleep N"), que se chame sleep(N). Se for para chamar system("read"), que se chame scanf("%*[^\n]%*1[\n]").


8. Re: Programação C, GALERA SE ALGUEM PODER ME AJUDAR POR FAVOR...

Perfil removido
removido

(usa Nenhuma)

Enviado em 18/05/2016 - 17:38h

Na verdade eu não faria uma coisa destas e eu citei vagamente.

----------------------------------------------------------------------------------------------------------------
# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts