Ir ao conteúdo
  • Cadastre-se

Programa para classificar politicos


brkst

Posts recomendados

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

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!