Ir ao conteúdo

Posts recomendados

Postado

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")entao
      Escreval("Finalizando quis")
   fimse

   se (opcao = "1") entao 
      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")entao
          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")entao
          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")entao
          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")entao
          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")entao
      vetnome[1..20] <- nome
      vetpontos <- pontos
      Escreva(nome, "sua pontuacao é: ",pontos)
   fimse
fimalgoritmo

 

  • Curtir 1
Postado

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

Postado

@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

 

  • Membro VIP
Postado

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
  • 3 anos depois...
  • Membro VIP
Postado
1 hora atrás, Albeliano Lacerda disse:

Como posso colocar gabarito nesses algoritmos aí em cima?

 

Para inserir um gabarito, primeiro você precisa ter um código funcionando sem gabarito.

 

Poste o teu código completo que esteja funcionando, depois vemos a parte do gabarito.

 

No aguardo.

 

  • Triste 1
Postado
Em 07/05/2021 às 09:19, Simon Viegas disse:

@Albeliano Lacerda, o código que você postou estava ilegível e desta forma ele foi removido.

 

Por favor, poste o código completo que você já fez e em qual parte está com dúvidas.

 

 

algoritmo "quizz de Química"  //nome da aplicação
//comandos utilizados na aplicação:
// Função : Jogo de Perguntas e Respostas
// Autor : albeliano Junior
// 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("1 - Ocorre a fusão quando?")
         Escreval("a) Quando passa do estado liquido para o sólido")
         Escreval("b) Quando passa do estado Liquido para o gasoso ")
         Escreval("c) Quando passa do estado solido pro liquido")
         Escreval("d) Quando passa do estado Liquido para o gasoso")
         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("2 - O que é Inercia?")
         Escreval("a) A matéria tem de ocupar um lugar no espaço")
         Escreval("b) Dois corpos não podem ocupar, simultaneamente o mesmo lugar no espaço ")
         Escreval("c) Consiste em ter volume reduzido quando submetida a determinada pressão")
         Escreval("d) A matéria permanece na situação em que se encontra, seja em movimento, seja em repouso")
         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("|  Terceira Pergunta |")
         Escreval("--------------------------------------------------------")
         Escreval("3 - São exemplos de propriedades Gerais da matéria?")
         Escreval("a) Extensão, Inércia, Impenetrabilidade, Compressibilidade, Elasticidade, Divisibilidade e Indestrutibilidade")
         Escreval("b) Dureza, Brilho, Maleabilidade, Ductilidade, Densidade é Magnetismo")
         Escreval("c) Propriedades organolépticas e Ponto de fusão e ebulição")
         Escreval("d) Todas estão errada")
         Escreval("Resposta:")
         leia(opcao)
         se(opcao = "a")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("4 - Existem 2 tipos de propriedades da matéria. Quais são elas?")
         Escreval("a) Propriedades Normais e anormais")
         Escreval("b) Propriedades Simples e raras")
         Escreval("c) Propriedades Gerais e especificas")
         Escreval("d) Propriedades antigas e atuais")
         Escreval("Resposta:")
         leia(opcao)
         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("| 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: albeliano junior #")
         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

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!