Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
brkst

Programa para classificar politicos

Recommended Posts

Sou iniciante em c.

 

Alguém poderia me ajudar com esse programa em c?

 

Não consigo fazer o primeiro "do" do desejacontinuar entrar... 

ta dando um erro e não sei resolver, se alguem me ajudar agradeço.

 

O algoritmo está funcionando normalmente, o problema mesmo é em c.

 

Algoritmo do programa: 

// Declaraçõestexto nome, classificacao;inteiro qtdeProcessos, semVergonha, corrupto, politico;caracter desejaContinuar;// InstruçõessemVergonha=0;corrupto=0;politico=0;facaescreval("Informe o nome do político: ");leia(nome);enquanto( comparaTexto(nome,"")==0) facaescreval("Informe o nome novamente: ");leia(nome);fimEnquantolimpaTela();facaescreval("Informe a quantidade de processos do político: ");leia(qtdeProcessos);qtdeProcessos=validaProcessos(qtdeProcessos);se(qtdeProcessos==-77)entaoescreval("Processo inválido, informe novamente: ");fimSeenquanto (qtdeProcessos==-77);limpaTela();se( qtdeProcessos>8) entaoclassificacao="Sem vergonha";semVergonha=semVergonha+1;senaose(qtdeProcessos>=2 e qtdeProcessos<=8) entaoclassificacao="Corrupto";corrupto=corrupto+1;senaose(qtdeProcessos>=0 e qtdeProcessos<=1) entaoclassificacao="Político";politico=politico+1;fimSefimSefimSecategoriaPolitico(classificacao);escreval("Deseja continuar? [S/N] ");leiaCaracter(desejaContinuar);enquanto (desejaContinuar!='s' e desejaContinuar!='n') facaescreval("Opcao invalida, informe novente: ");leiaCaracter(desejaContinuar);fimEnquantodesejaContinuar=maiusculoCaracter(desejaContinuar);enquanto(desejaContinuar=='S');limpaTela();mostraTotal(corrupto, politico, semVergonha);fimPrincipal//Objetivo//Parâmetros//retornoprocedimento categoriaPolitico (texto classificacao)escreval(classificacao);fimProcedimento//Objetivo//Parâmetros//retornoprocedimento mostraTotal (inteiro corrupto, inteiro politico, inteiro semVergonha)escreval("Corrupto:", corrupto);escreval("Político:", politico);escreval("Sem vergonha:",semVergonha);fimProcedimento//Objetivo//Parâmetros//retornofuncao inteiro validaProcessos(inteiro qtdeProcessos)se ( qtdeProcessos<0 ou qtdeProcessos>152) entaoretorna -77;senaoretorna qtdeProcessos;fimSefimFuncao
 
Programa em c:
#include <stdio.h>#include <conio.c>//Prototipos void leValidaNome (char titulo[], char nome[]);void categoriaPolitico (char classificacao[]);void mostraTotal (int corrupto, int politico, int semVergonha);int validaProcessos(int qtdeProcessos);int main(void){// Declaracoeschar nome[100], classificacao[100];int qtdeProcessos, semVergonha, corrupto, politico;char desejaContinuar;// Instrucoes    semVergonha=0;corrupto=0;politico=0;do{         leValidaNome("Informe o nome do politico: \n", nome);do{printf("Informe a quantidade de processos do politico: \n");scanf("%d", &qtdeProcessos);qtdeProcessos=validaProcessos(qtdeProcessos);if(qtdeProcessos==-77){printf("Processo inválido, informe novamente: ");}}while (qtdeProcessos==-77);if( qtdeProcessos>8) {sprintf(classificacao,"Sem vergonha");semVergonha=semVergonha+1;        }else        {if(qtdeProcessos>=2 && qtdeProcessos<=8){sprintf(classificacao,"Corrupto");corrupto=corrupto+1;            }                       else   {if(qtdeProcessos>=0 && qtdeProcessos<=1) {sprintf(classificacao,"Político");politico=politico+1;                }            }                       }categoriaPolitico(classificacao);printf("Deseja continuar? [S/N] \n");scanf("%c", &desejaContinuar);        } while(desejaContinuar=='s');        mostraTotal(corrupto, politico, semVergonha);  getch();  return 0;}//Objetivo ://Parâmetros ://retorno :    void leValidaNome (char titulo[], char nome[])    {    printf("%s", titulo);    gets(nome); while(strcmp(nome,"")==0)     {        printf("Informe o nome novamente: ");scanf("%s", &nome);}}//Objetivo://Parâmetros://retorno:          void categoriaPolitico (char classificacao[]){printf("%s", classificacao);}//Objetivo://Parâmetros://retorno:void mostraTotal (int corrupto, int politico, int semVergonha){printf("Corrupto:", corrupto);printf("Politico:", politico);printf("Sem vergonha:",semVergonha);}//Objetivo://Parâmetros://retorno:int validaProcessos(int qtdeProcessos){if ( qtdeProcessos<0 || qtdeProcessos>152) {return -77;    }else{return qtdeProcessos;    }}

Agradeço MUITO quem me ajudar, por favor...

Editado por brkst

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que está acontecendo é algo comum quando se usa o scanf para ler um unico caractere. O scanf está capturando o \n quando você digita o enter e armazenando ele na variavel "desejaContinuar". Sugiro que o getchar ou iniba o \n de ser armazenado:

fflush(stdin); //limpa o buffer//desejaContinuar=getchar();scanf("%[^\n]%*c",&desejaContinuar);

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×