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:  

Recommended Posts

Boa noite estou precisando fazer um algoritmo quis que tenha um menu com ranking com nome e pontuação feita, porém não sei como fazer o item ranking, como podem ver abaixo eu consegui fazer a parte das perguntas, mas preciso fazer um ranking com nome e pontuação, top 10, da melhor a pior. se alguem puder ajudar ficaria agradecido.

 

att

 

algoritmo "quis"    //nome da aplicação
//comandos utilizados na aplicação:
// Função : Jogo de Perguntas e Respostas
// Autor : Pablo
// Seção de Declarações
var
erros, acertos, pontuacao: inteiro     //variaveis para armazenar acertos e erros
opcao: caractere            //variavel para armazenar opção de resposta
nome: caractere
vetnome: vetor[1..20] de caractere
vetpontos: vetor[1..20] de inteiro
inicio
// Seção de Comandos 
// verifica o tempo de execução do programa
cronometro on
   Escreval("*------------------------------------------------------*")
    Escreval("|                    MENU DE opções                    |")
    Escreval("*------------------------------------------------------*")
    Escreval("|  0 - SAIR DO quis                                    |")
    Escreval("|  1 - INICIAR quis                                    |")
    Escreval("|  2 - RANKING                                         |")       //selecionar o que deseja fazer
    Escreval("*------------------------------------------------------*")
    Escreval("O QUE DESEJA FAZER ? ")
    leia(opcao)
        
    se (opcao = "0")então
    Escreval("Finalizando quis")
    fimse
    
    se (opcao = "1") então           
    limpatela
    
Escreval("Digite o seu nome: ")
leia (nome)
// o comando escreva tem o objetivo de exibir na tela
Escreval("--------------------------------------------------------")
Escreval("|                         quis                         |")
Escreval("|                  Primeira Pergunta                   |")
Escreval("--------------------------------------------------------")
Escreval(" ")
Escreval("1 - O que é Lógica?")
Escreval("a) Nada ")
Escreval("b) Uma Coisa Ruim")
Escreval("c) Sequência Linear")
Escreval("")
Escreval("Resposta:")
leia(opcao)
//comando "leia" tem o objetivo de ler a opção escolhida
//comando "se" é um comando que indica condição e faz um comparação
se(opcao = "c")então
         acertos <- acertos + 1
         pontuacao <- pontuacao +100
senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
fimse
// Comando para limpar a tela
limpatela
Escreval("--------------------------------------------------------")
Escreval("|                         quis                         |")
Escreval("|                   Segunda Pergunta                   |")
Escreval("--------------------------------------------------------")
Escreval(" ")
Escreval("2 - A função  b2 - 4 x A x C?")
Escreval("a) Estocombo ")
Escreval("b) Delta")
Escreval("c) Tabela quântica")
Escreval("")
Escreval("Resposta:")
leia(opcao)
se(opcao = "b")então
         acertos <- acertos + 1
         pontuacao <- pontuacao +100
senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
fimse

// Comando para limpar a tela
limpatela
Escreval("--------------------------------------------------------")
Escreval("|                        quis                          |")
Escreval("|                  Terceira Pergunta                   |")
Escreval("--------------------------------------------------------")
Escreval(" ")
Escreval("3 - A pintura da monaliza é de ?")
Escreval("a) Van Gogh ")
Escreval("b) Da Vinci")
Escreval("c) Alexandre Frota")
Escreval("")
Escreval("Resposta:")
leia(opcao)
se(opcao = "b")então
         acertos <- acertos + 1
         pontuacao <- pontuacao +100
senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
fimse
// Comando para limpar a tela
limpatela

Escreval("--------------------------------------------------------")
Escreval("|                         quis                         |")
Escreval("|                    Quarta Pergunta                   |")
Escreval("--------------------------------------------------------")
Escreval(" ")
Escreval("4 - O Iphone foi desenvolvido por?")
Escreval("a) Ney Mato Grosso ")
Escreval("b) Silvio Santos")
Escreval("c) Bill Gates")
Escreval("d) Steve Jobs")
Escreval("")
Escreval("Resposta:")
leia(opcao)
se(opcao = "d")então
         acertos <- acertos + 1
         pontuacao <- pontuacao +100
senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
fimse
// Comando para limpar a tela
limpatela

Escreval("--------------------------------------------------------")
Escreval("|                          quis                        |")
Escreval("|                 Obrigado por particpar!!             |")
Escreval("--------------------------------------------------------")

Escreval("")
Escreval("********************************************************")
Escreval("*                  Parabens: ", nome,"                    *")
Escreval("*                  Você acertou: ", acertos,"                    *")
Escreval("*                  Você errou: ", erros,"                      *")
Escreval("*                  Você fez: ", pontuacao," pontos                     *")
Escreval("********************************************************")
Escreval("")
Escreval("########################################################")
Escreval("#                                                      #")
Escreval("#                 Autor: Pablo                         #")
Escreval("#                                                      #")
Escreval("#                     Versão Aprendizado               #")
Escreval("#                                                      #")
Escreval("########################################################")
cronometro off
fimse
se (opcao = "2")então
vetnome[1..20] <- nome
vetpontos <- pontos
Escreva(nome, "sua pontuacao é: ",pontos)
fimse
fimalgoritmo

 

Editado por DiF
Botão CODE <> e prefixo da linguagem
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Pablo Queiroz Dias    se você usar vetor será mais fácil, por exemplo você pode criar um vetor bidimensional também chamado matriz, na área de variáveis,  assim :

matriz : vetor[1..10,1..4] de caracteres

com isso coloque uma estrutura de repetição com uma variável de controle que pode ser J começando em 1 e nesse caso indo no máximo  até 10  e então na matriz coloque assim :

 matriz[j,1] := nome
 matriz[j,2] := acertos
 matriz[j,3] := erros
 matriz[j,4] := pontuação

e depois de cada resposta faça a atualização dessa matriz com os novos valores, sendo que como essa matriz é de caracteres para fazer cálculos precisa converter os dados para inteiro usando a função caracpnum, que funciona assim :

a=caracpnum(matriz[j,2])

e então fazer a soma e colocar novamente na matriz e dessa vez use a função numpcarac assim :

a=a+1
matriz[j,2]:=numpcarac(a)

depois lá no final pegue os resultados que estarão guardados na matriz, no mesma ordem em que foram guardados e para ver o ranking você faz a organização da matriz em ordem decrescente, com isso o que estiver em primeiro será o mais bem pontuado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Pablo Queiroz Dias       nas opções você poderia usar o comando escolha / caso , mas seu código esta funcionando bem,  e para o ranking precisar de uma matriz .

   experimente esse seu código com algumas modificações :

algoritmo "quis"    //nome da aplicação
//comandos utilizados na aplicação:
// Função : Jogo de Perguntas e Respostas
// Autor : Pablo
// Seção de Declarações
var
  erros,acertos,pontuacao,cont,op,a,b : inteiro //variaveis para armazenar acertos e erros
  opcao     : caractere                   //variavel para armazenar opção de resposta
  nome,aux  : caractere
  vetnome   : vetor[1..20] de caractere
  vetpontos : vetor[1..20] de inteiro
  ranking   : vetor[1..20,1..4] de caractere
inicio
  // Seção de Comandos
  // verifica o tempo de execução do programa
  cont := 1
  repita  // para jogar varias vezes
    limpatela
    //cronometro on
    escreval("                       ",cont," Rodada")
    Escreval("*------------------------------------------------------*")
    Escreval("|                    MENU DE opções                    |")
    Escreval("*------------------------------------------------------*")
    Escreval("|  0 - SAIR DO quis                                    |")
    Escreval("|  1 - INICIAR quis                                    |")
    Escreval("|  2 - RANKING                                         |")       //selecionar o que deseja fazer
    Escreval("*------------------------------------------------------*")
    Escreva("O QUE DESEJA FAZER ? ")
    leia(opcao)

    se (opcao = "0")ENTÃO
      Escreval("Finalizando quis")
      op := 1
    fimse

    se (opcao = "1") ENTÃO
      limpatela

      Escreval("Digite o seu nome: ")
      leia (nome)
      // o comando escreva tem o objetivo de exibir na tela
      Escreval("--------------------------------------------------------")
      Escreval("|                         quis                         |")
      Escreval("|                  Primeira Pergunta                   |")
      Escreval("--------------------------------------------------------")
      Escreval(" ")
      Escreval("1 - O que é Lógica?")
      Escreval("a) Nada ")
      Escreval("b) Uma Coisa Ruim")
      Escreval("c) Sequência Linear")
      Escreval("")
      Escreval("Resposta:")
      leia(opcao)
      //comando "leia" tem o objetivo de ler a opção escolhida
      //comando "se" é um comando que indica condição e faz um comparação
      se(opcao = "c")ENTÃO
        acertos <- acertos + 1
        pontuacao <- pontuacao +100
      senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
      fimse
      // Comando para limpar a tela
      limpatela
      Escreval("--------------------------------------------------------")
      Escreval("|                         quis                         |")
      Escreval("|                   Segunda Pergunta                   |")
      Escreval("--------------------------------------------------------")
      Escreval(" ")
      Escreval("2 - A função  b2 - 4 x A x C?")
      Escreval("a) Estocombo ")
      Escreval("b) Delta")
      Escreval("c) Tabela quântica")
      Escreval("")
      Escreval("Resposta:")
      leia(opcao)
      se(opcao = "b")ENTÃO
        acertos <- acertos + 1
        pontuacao <- pontuacao +100
      senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
      fimse

      // Comando para limpar a tela
      limpatela
      Escreval("--------------------------------------------------------")
      Escreval("|                        quis                          |")
      Escreval("|                  Terceira Pergunta                   |")
      Escreval("--------------------------------------------------------")
      Escreval(" ")
      Escreval("3 - A pintura da monaliza é de ?")
      Escreval("a) Van Gogh ")
      Escreval("b) Da Vinci")
      Escreval("c) Alexandre Frota")
      Escreval("")
      Escreval("Resposta:")
      leia(opcao)
      se(opcao = "b")ENTÃO
        acertos <- acertos + 1
        pontuacao <- pontuacao +100
      senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
      fimse
      // Comando para limpar a tela
      limpatela

      Escreval("--------------------------------------------------------")
      Escreval("|                         quis                         |")
      Escreval("|                    Quarta Pergunta                   |")
      Escreval("--------------------------------------------------------")
      Escreval(" ")
      Escreval("4 - O Iphone foi desenvolvido por?")
      Escreval("a) Ney Mato Grosso ")
      Escreval("b) Silvio Santos")
      Escreval("c) Bill Gates")
      Escreval("d) Steve Jobs")
      Escreval("")
      Escreval("Resposta:")
      leia(opcao)
      se(opcao = "d")ENTÃO
        acertos <- acertos + 1
        pontuacao <- pontuacao +100
      senao
        erros <- erros + 1
        pontuacao <- pontuacao +0
      fimse
      // Comando para limpar a tela
      limpatela

      Escreval("--------------------------------------------------------")
      Escreval("|                          quis                        |")
      Escreval("|                 Obrigado por particpar!!             |")
      Escreval("--------------------------------------------------------")

      Escreval("")
      Escreval("********************************************************")
      Escreval("*                  Parabens: ", nome,"                    *")
      Escreval("*                  Você acertou: ", acertos,"                    *")
      Escreval("*                  Você errou: ", erros,"                      *")
      Escreval("*                  Você fez: ", pontuacao," pontos                     *")
      Escreval("********************************************************")
      Escreval("")
      Escreval("########################################################")
      Escreval("#                                                      #")
      Escreval("#                 Autor: Pablo                         #")
      Escreval("#                                                      #")
      Escreval("#                     Versão Aprendizado               #")
      Escreval("#                                                      #")
      Escreval("########################################################")
      //cronometro off
      ranking[cont,1]:=nome
      ranking[cont,2]:=numpcarac(acertos)//passar de numero para caractere
      ranking[cont,3]:=numpcarac(erros)
      ranking[cont,4]:=numpcarac(pontuacao)
      cont:=cont+1
      escreval
      escreval("              Tecle Enter")
      leia(opcao)
    fimse
    //mostra o ranking
    se (opcao = "2")ENTÃO
      para a de 1 ate cont-1 faca    //para organizar em ordem decescente
        aux:=ranking[a,4]            // aux pega a pontuação do jogador
        para b de a+1 ate cont faca  // b aponta para o próximo jogador no vetor
          se ranking[b,4]>aux ENTÃO  //se pontuação do próximo jogador maior que a do anterior
             ranking[a,4]:=ranking[b,4]//coloca o maior primeiro
             ranking[b,4]:=aux       //coloca o menor depois
             aux:=ranking[a,1]//troca os outros dados do jogador, aqui é nome
             ranking[a,1]:=ranking[b,1]
             ranking[b,1]:=aux
             aux:=ranking[a,2] //aqui é acertos
             ranking[a,2]:=ranking[b,2]
             ranking[b,2]:=aux
             aux:=ranking[a,3]  // aqui é erros
             ranking[a,3]:=ranking[b,3]
             ranking[b,3]:=aux
          fimse
        fimpara
      fimpara
      se cont = 1 ENTÃO
        b:=cont
      senao
        b := cont-1
      fimse
      para a de 1 ate b faca
        escreva("nome -> ",ranking[a,1],"  acertou ",ranking[a,2])
        escreval("  Errou ",ranking[a,3],"  Pontuação ",ranking[a,4])
      fimpara
      pontuacao:= 0
      acertos  := 0
      erros    := 0
      escreval("Tecle Enter")
      leia(opcao)
    fimse
  ate op = 1
fimalgoritmo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos...

 

Só uns adendos:

 

1) CONDIÇÕES MUTUAMENTE EXCLUDENTES

Assim como foi usado o SE/ENTÃO/SENÃO para o acertos ou erros, deveriam-se também usar para o Menu, ou seja, lá está com um conjunto de SE/ENTÃO, mas deveria ser SE/ENTÃO/SENÃO (não pode ser 0, 1 ou 2 ao mesmo tempo)... ou como sugerido por @devair1010, usar o ESCOLHA/CASO. (que é uma espécie de se/então/senão mais sofistica).

 

 

 

2) VARIÁVEIS

Ao usar o hanking, os vetores vetnome e vetpontos passaram a não ser mais úteis, logo, apagar lá da declaração.

 

 

 

3) VALIDAÇÃO DE ITEM

Antes de iniciar o Ranking, poderia fazer uma verificação se já existe alguma partida já finalizada, ou seja, com "cont<>1".

 

Isso inclusive já evitaria essa verificação:

9 horas atrás, devair1010 disse:

      se cont=1 ENTÃO
         b:=cont
      senao
         b:=cont-1
      fimse

 

Obs.: pelo que eu entendi, quando nenhuma partida ainda foi feita, o cont conterá 1, daí ao fazer cont-1, ele iria para 0.

 

 

 

***

 

Por enquanto é isso.

 

No aguardo.

  • Curtir 1

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

×