Ir ao conteúdo

Posts recomendados

Postado

Olá galera, preciso de outra ajudinha aqui, acabei de começar o código, mas to com dificuldade para entender a lógica. Eu preciso que a matriz receba a pergunta e a resposta(gabarito.

Peço que não mandem o código pronto, me passem uma explicação.

 

Código:

Var
   quest                   :vetor[1..10,1..5] de caractere
   a,b,c,d                 :caractere
   respostaop              :inteiro
   r,q                     :inteiro
   tela                    :caractere
   acertos                 :inteiro
   cont                    : inteiro
procedimento q()
inicio
   limpatela
   cont <- cont + 1
   escreval(cont,"° QUESTÃO:")
fimprocedimento

procedimento separa()
inicio
   escreval("-------------------------------")
fimprocedimento
Inicio
   escreval("********************************************************")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*              Questionário Perguntas                  *")
   escreval("*                    Aleatórias                        *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*           PRESSIONE ENTER PARA COMEÇAR               *")
   escreval("*                                                      *")
   escreval("*                 BOA SORTE! ;3                        *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escrevaL("********************************************************")
   escreva("Aperte ENTER para continuar...")
   leia(tela)
   limpatela
   //GABARITO

   //-----------------questão1--------------------
   q()
   para q de 1 ate 10 faca
      para r de 1 ate 5 faca
         quest[1,1] <- "Quem foi Adolf Hitler"
      fimpara
   fimpara


   escreval( quest[1])
   separa()
   escreval( "A)Um Camponês Alemão")
   escreval( "B)Líder da Alemanha Nazista no período da Segunda Guerra")
   escreval( "C)Líder do Brasil no período da Segunda Guerra")
   escreval( "D)Empresário Alemão")
   escreval()
   escreva("A alternativa certa é:")
   leia(resp[1])
   se resp[1] = "B" entao
      acertos <- acertos + 1
   fimse
   q ()
   //--------------------QUESTÃO 2-----------------------
   quest[2] <- "Quem foi Benito Mussolini?"
   escreval(quest[2])
   separa()
   escreval( "A)Líder do Partido Nacional Fascista na Itália")
   escreval( "B)Líder de movimentos comunistas")
   escreval( "C)Presidente do Brasil")
   escreval( "D)Camponês")
   escreval()
   escreva("A alternativa certa é:")
   leia(resp[2])
   se resp[2] = "A" entao
      acertos <- acertos + 1
   fimse
   q()
Fimalgoritmo

 

  • Curtir 1
  • Obrigado 1
Postado

@Biscatão da Boate     você precisa colocar as perguntas e alternativas e a resposta na matriz antes de começar a jogar , e depois você usa um laço de repetição  para  para mostra a pergunta e as alternativas de cada pergunta e não mostra a resposta , mas ela está lá na matriz para testar se a resposta está certa , assim você não precisa repetir partes do código que já foram feitas , então  para colocar na matriz é como você colocou mesmo , mas precisa colocar as duas dimensões da matriz , e ali você colocou apenas uma dimensão ,  então poderia ser assim  :

//------------------    inicio  --------------------------------------
Inicio
quest[1,1] <- "Quem foi Adolf Hitler"//pergunta
quest[1,2] <- "A)Um Camponês Alemão" //alternativa
quest[1,3] <- "B)Líder da Alemanha Nazista no período da Segunda Guerra"
quest[1,4] <- "C)Líder do Brasil no período da Segunda Guerra"
quest[1,5] <- "D)Empresário Alemão"
quest[1,6] <- "B"//resposta certa em todas as perguntas nessa posição

 

  • Curtir 1
  • Obrigado 1
Postado

Crie um algoritmo com uma matriz que armazene questões e as respostas das questões, mas já vi onde tava errando... Obrigado

adicionado 5 minutos depois

@devair1010 Mas ai eu tenho que fazer isso para as 10 questões?

32 minutos atrás, devair1010 disse:

//------------------    inicio  --------------------------------------
Inicio
quest[1,1] <- "Quem foi Adolf Hitler"//pergunta
quest[1,2] <- "A)Um Camponês Alemão" //alternativa
quest[1,3] <- "B)Líder da Alemanha Nazista no período da Segunda Guerra"
quest[1,4] <- "C)Líder do Brasil no período da Segunda Guerra"
quest[1,5] <- "D)Empresário Alemão"
quest[1,6] <- "B"//resposta certa em todas as perguntas nessa posição

 

  • Curtir 1
Postado

@Biscatão da Boate    sim , de qualquer forma você precisa colocar os dados na memória do pc , e no visualg esse modo é o mais econômico e eficaz , então para cada pergunta você coloca esse mesmo código mas com a pergunta e resposta que você quiser , e para mostrar a pergunta você coloca um loop para indo de 1 até 10  , pois serão dez perguntas , e imprime a pergunta daquela posição da matriz e em seguida dentro do mesmo loop coloque outro loop para indo de 2 até 5 para mostrar as alternativas , e logo depois pega a resposta , e depois que pegar a resposta do usuário , você compara com o que está na matriz na posição 6 , que é a resposta certa da pergunta que está na mesma posição .

  • Curtir 1
  • Obrigado 1
  • Membro VIP
Postado

@Biscatão da Boate, olá.

 

4 horas atrás, Biscatão da Boate disse:

Eu preciso que a matriz receba a pergunta e a resposta (gabarito).

 

Você poderia definir a matriz com duas coordenadas. A primeira para o número da questão, a outra posição ter as 4 resposta e a posição 5 terá o número da posição onde está a resposta correta. Ex.:

var
   questoes    :vetor[1..10,1..5] de caractere //[número da questão,dados da questão]

 

Cria uma procedimento para "preencher a matriz". Ex.:

procedimento defineQuestoes()
inicio
questoes[1,1] <- "Um Camponês Alemão                                         ")
questoes[1,2] <- "Líder da Alemanha Nazista no período da Segunda Guerra     ")
questoes[1,3] <- "Líder do Brasil no período da Segunda Guerra               ")
questoes[1,4] <- "Empresário Alemão                                          ")
questoes[1,5] <- "B" //resposta correta

questoes[2,1] <- "xxx"
questoes[2,2] <- "xxx"
questoes[2,3] <- "xxx"
questoes[2,4] <- "xxx"
questoes[2,5] <- "C"

questoes[3,1] <- "xxx"
questoes[3,2] <- "xxx"
questoes[3,3] <- "xxx"
questoes[3,4] <- "xxx"
questoes[3,5] <- "A"
fimProcedimento

 

Na hora de perguntar, usa as 4 posições da segunda coordenada.

 

E quanto tiver as respostas, compara elas com a 5ª da respectiva questão. Algo como:

   se respostas[q] = questoes[q,5] entao

 

***

 

 

Qualquer dúvida é só perguntar.

  • Curtir 1
  • Obrigado 1
Postado

@Biscatão da Boate    não , você faz tudo junto  , como se fosse apenas uma pergunta com quatro alternativas e uma resposta e o loop repete a mesma coisa , mas como na matriz os dados de cada dimensão são diferentes ele vai imprimir as perguntas que estão na matriz e que são diferentes , e por que  são dez perguntas e 40 alternativas e 10 respostas ,  e o loop reduz isso para poucas linhas .

  • Membro VIP
Postado
16 minutos atrás, Simon Viegas disse:

Cria uma procedimento para "preencher a matriz". Ex.:


procedimento defineQuestoes()
inicio
questoes[1,1] <- "Um Camponês Alemão                                         ")
questoes[1,2] <- "Líder da Alemanha Nazista no período da Segunda Guerra     ")
questoes[1,3] <- "Líder do Brasil no período da Segunda Guerra               ")
questoes[1,4] <- "Empresário Alemão                                          ")
questoes[1,5] <- "B" //resposta correta

questoes[2,1] <- "xxx"
questoes[2,2] <- "xxx"
questoes[2,3] <- "xxx"
questoes[2,4] <- "xxx"
questoes[2,5] <- "C"

questoes[3,1] <- "xxx"
questoes[3,2] <- "xxx"
questoes[3,3] <- "xxx"
questoes[3,4] <- "xxx"
questoes[3,5] <- "A"
fimProcedimento

 

 

@devair1010, no caso eu esqueci de colocar a pergunta. Mas o raciocínio ficou bem parecido, rs

adicionado 5 minutos depois

Obs.: reparem que eu não coloquei a "letra" da questão, pois a ideia seria, além de sortear o número da questão, também sortear a ordem que as alternativas irão ser apresentadas.

  • Curtir 2
Postado

@Simon Viegas @Simon Viegas

Ta dando um erro nos Para, sabem me informar onde?

Algoritmo "Alg QUestionário"
Var
   quest                   :vetor[1..10,1..6] de caractere
   resp                    :inteiro
   r,q                     :inteiro
   tela                    :caractere
   acertos                 :inteiro
   cont                    : inteiro
procedimento q()
inicio
   limpatela
   cont <- cont + 1
   escreval(cont,"° QUESTÃO:")
fimprocedimento
procedimento separa()
inicio
   escreval("-------------------------------")
fimprocedimento
procedimento definequest()
inicio
   quest[1,1] <- "Quem foi Adolf Hitler?"
   quest[1,2] <- "A)Um Camponês Alemão"
   quest[1,3] <- "B)Líder da Alemanha Nazista no período da Segunda Guerra"
   quest[1,4] <- "C)Líder do Brasil no período da Segunda Guerra"
   quest[1,5] <- "D)Empresário Alemão"
   quest[1,6] <- "B"//Resposta Certa

   quest[2,1] <- "Quem foi Benito Mussolini?"
   quest[2,2] <- "A)Um ditador Italiano do PNF(Partido Nacional Fascista)"
   quest[2,3] <- "B)Um líder de movimentos comunistas"
   quest[2,4] <- "C)Fundador do Satanismo no mundo"
   quest[2,5] <- "D)Um traficante de escravos"
   quest[2,6] <- "A"//Resposta Certa

   quest[3,1] <- "Quando Foi a Segunda Guerra Mundial"
   quest[3,2] <- "A)1939 - 1945"
   quest[3,3] <- "B)1920 - 1930"
   quest[3,4] <- "C)1940 - 1980"
   quest[3,5] <- "D)1800 - 1850"
   quest[3,6] <- "A"//Resposta Certa
fimprocedimento
Inicio

   escreval("********************************************************")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*              Questionário Perguntas                  *")
   escreval("*                    Aleatórias                        *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*           PRESSIONE ENTER PARA COMEÇAR               *")
   escreval("*                                                      *")
   escreval("*                 BOA SORTE! ;3                        *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escreval("*                                                      *")
   escrevaL("********************************************************")

   escreva("Aperte ENTER para continuar...")

   leia(tela)
   limpatela

   //-----------------questão1--------------------

   q()
   separa()
   definequest()
   escreval(quest[1,1])
   escreval
   para q de 1 ate 5 faca
         para r de 2 ate 5 faca
            escreval(quest[q,r])
         fimpara
   fimpara
Fimalgoritmo

 

  • Curtir 1
Postado

@Biscatão da Boate       o para de dentro imprime as alternativas e o loop de fora imprime a pergunta ,  então poderia ser assim  :

para j de 1 ate 10 faca
    q
    escreval(quest[j,1])//a pergunta
    para i de 2 ate 5 faca
      escreval(quest[j,i])//as alternativas
    fimpara
    escreval
    escreva("A alternativa certa é : ")
    leia(resp[1])
    se resp[1] = quest[j,6] entao  // a resposta certa
      escreval("Parabéns , você acertou . . . !")
      acertos <- acertos + 1
      esperar
    senao
      escreval("Você errou !")
      esperar
    fimse
  fimpara

 

  • Curtir 1
  • Obrigado 1
Postado

@Biscatão da Boate      coloquei dois só para testar se está funcionando bem , depois coloque dez ou a quantidade que você quiser   ,  o j são as linhas , que vai de 1 até 10 e o i são as colunas  que vão de 1 até 6  mas imprime só até 5 e a 6 não , pois é a resposta certa  .

  e uma matriz seria assim :matriz_a.thumb.jpg.232fcf68cd6b618533ec6e35c0a1f718.jpg

  • Obrigado 1
Postado

@Biscatão da Boate    esse comando no visualg não é muito bom não , por que ele muda a cor de tudo que está na tela , ele muda o fundo todo para a cor determinada e também todas as letras  também para a outra cor determinada  ,   e seria assim  :

Algoritmo "mudacor"
Var
a,b : inteiro
Inicio
  mudacor("amarelo","frente")
  mudacor("verde","fundos")
  escreval("mudando a cor assim    tecle enter")
  leia(a)
  
  mudacor("preto","fundos")
  mudacor("branco","frente")
  escreval("mudou a cor novamente")
Fimalgoritmo

 

Postado

@devair1010  OK... Cara tem como eu mostrar as perguntas em ordem aleatória?


 

quest[1,1] <- "Quem foi Adolf Hitler?"
quest[1,2] <- "A)Um Camponês Alemão"
quest[1,3] <- "B)Líder da Alemanha Nazista no período da Segunda Guerra"
quest[1,4] <- "C)Líder do Brasil no período da Segunda Guerra"
quest[1,5] <- "D)Empresário Alemão"
quest[1,6] <- "B"//Resposta Certa

quest[2,1] <- "Quem foi Benito Mussolini?"
quest[2,2] <- "A)Um ditador Italiano do PNF(Partido Nacional Fascista)"
quest[2,3] <- "B)Um líder de movimentos comunistas"
quest[2,4] <- "C)Fundador do Satanismo no mundo"
quest[2,5] <- "D)Um traficante de escravos"
quest[2,6] <- "A"//Resposta Certa

Exibir a pergunta 2 primeiro e tal...

  • Curtir 1
  • Obrigado 1
Postado

@Biscatão da Boate    sim , use uma variável auxiliar que pegue um valor aleatório de 1 até 10 e coloque essa variável no lugar do entre colchetes que indica o posição da matriz dentro do loop j .e o aleatório é assim  :

 auxiliar   :  inteiro


auxiliar :=  randi( 10 ) + 1

 

  • Obrigado 1
Postado

@Biscatão da Boate     esse modo aí vai pegar um valor de 1 até 10 que são a quantidade de perguntas , como foi colocado no inicio , mas se você quiser usar mais ou menos perguntas então mude o valor entre parenteses e o número + 1  é para começar de 1 , ou se você quiser começar de dois e ir até 10  então coloque  9 entre parenteses e  + 2 , por que o comando randi  gera números entre zero e o número colocado dentro dos parenteses -1  .

  • Obrigado 1
Postado

@devair1010 Quando tento fazer o randi com o gabarito das questões, todas elas ficam "A". Preciso que o gabarito também apareça aleatorio. Segue o código:
 

Algoritmo "Alg QUestionário"

Var

quest                   :vetor[1..10,1..6] de caractere
resp                    :caractere
r,q                     :inteiro
tela                    :caractere
certos                  :inteiro
erros                   :inteiro
cont                    :inteiro
op,op2                  :inteiro
confirm                 :caractere
aux                     :inteiro


procedimento q()

inicio

limpatela

cont <- cont + 1

escreval(cont,"° QUESTÃO:")

fimprocedimento

procedimento separa()

inicio

escreval("-------------")

fimprocedimento

procedimento limpa()

inicio
escreval("Pressione ENTER...")
leia(confirm)
limpatela
fimprocedimento

procedimento definequest()
inicio
aleatorio on
quest[1,1] <- "Quem foi Adolf Hitler?"
quest[1,2] <- "A)Um Camponês Alemão"
quest[1,3] <- "B)Líder da Alemanha Nazista no período da Segunda Guerra"
quest[1,4] <- "C)Líder do Brasil no período da Segunda Guerra"
quest[1,5] <- "D)Empresário Alemão"
quest[1,6] <- "B"//Resposta Certa

quest[2,1] <- "Quem foi Benito Mussolini?"
quest[2,2] <- "A)Um ditador Italiano do PNF(Partido Nacional Fascista)"
quest[2,3] <- "B)Um líder de movimentos comunistas"
quest[2,4] <- "C)Fundador do Satanismo no mundo"
quest[2,5] <- "D)Um traficante de escravos"
quest[2,6] <- "A"//Resposta Certa

quest[3,1] <- "Quando Foi a Segunda Guerra Mundial?"
quest[3,2] <- "A)1939 - 1945"
quest[3,3] <- "B)1920 - 1930"
quest[3,4] <- "C)1940 - 1980"
quest[3,5] <- "D)1800 - 1850"
quest[3,6] <- "A"//Resposta Certa

quest[4,1] <- "Quem foi Júlio César?"
quest[4,2] <- "A)Foi um político e futuramente Imperador Romano"
quest[4,3] <- "B)Foi um matemático"
quest[4,4] <- "C)Foi um religioso"
quest[4,5] <- "D)Foi um programador"
quest[4,6] <- "A"//Resposta Certa

quest[5,1] <- "Quando foi a Primeira Guerra Mundial?"
quest[5,2] <- "A)1964 - 1985"
quest[5,3] <- "B)1914 - 1918"
quest[5,4] <- "C)1956 - 1978"
quest[5,5] <- "D)1900 - 1920"
quest[5,6] <- "B"//Resposta Certa

quest[5,1] <- "Quando foi o Regime Militar no Brasil?"
quest[5,2] <- "A)1964 - 1985"
quest[5,3] <- "B)1916 - 1918"
quest[5,4] <- "C)1912 - 1918"
quest[5,5] <- "D)1910 - 1920"
quest[5,6] <- "A"//Resposta Certa

quest[6,1] <- "Quando foi descoberta a América?"
quest[6,2] <- "A)1492"
quest[6,3] <- "B)1500"
quest[6,4] <- "C)1450"
quest[6,5] <- "D)1600"
quest[6,6] <- "A"//Resposta Certa

quest[7,1] <- "Quando foi descoberto o Brasil?"
quest[7,2] <- "A)1480"
quest[7,3] <- "B)1500"
quest[7,4] <- "C)1450"
quest[7,5] <- "D)1600"
quest[7,6] <- "B"//Resposta Certa

quest[8,1] <- "Quem descobriu o Brasil?"
quest[8,2] <- "A)Pedro Álvares Cabral"
quest[8,3] <- "B)Getúlio Vargas"
quest[8,4] <- "C)Dom Pedro I"
quest[8,5] <- "D)Dom Pedro II"
quest[8,6] <- "A"//Resposta Certa


quest[9,1] <- "Quando foi proclamado a República?"
quest[9,2] <- "A)1889"
quest[9,3] <- "B)1420"
quest[9,4] <- "C)1450"
quest[9,5] <- "D)1700"
quest[9,6] <- "A"//Resposta Certa


quest[10,1] <- "Quando foi o período das Cruzadas?"
quest[10,2] <- "A)1095 - 1291"
quest[10,3] <- "B)900  - 1000"
quest[10,4] <- "C)1000 - 1100"
quest[10,5] <- "D)1100 - 1200"
quest[10,6] <- "A"//Resposta Certa
aleatorio off
fimprocedimento

procedimento menu()
inicio
escreval("********************************************************")
escreval("*                                                      *")
escreval("*                                                      *")
escreval("*                AVALIAÇÃO HISTÓRIA                    *")
escreval("*                                                      *")
escreval("*                1 - REALIZAR PROVA                    *")
escreval("*                2 - RELATÓRIOS                        *")
escreval("*                3 - FECHAR PROVA                      *")
escreval("*                                                      *")
escreval("*                 BOA SORTE! ;3                        *")
escreval("*                                                      *")
escreval("*                                                      *")
escreval("*                                                      *")
escreval("*                                                      *")
escrevaL("********************************************************")
leia (op)
fimprocedimento

Inicio


definequest()
menu()

se op = 1 entao
   para q de 1 ate 10 faca
      q()
      separa()
      aux <- randi(10) + 1
      escreval(quest[aux,1])
      escreval
      para r de 2 ate 5 faca
         escreval(quest[q,r])
      fimpara
      escreval()
      escreva("A alternativa CORRETA é:")
      leia(resp)
      se (resp = quest[aux,6]) entao
         acertos <- acertos + 1
      senao
         erros <- erros + 1
      fimse
   fimpara
   limpatela
fimse
menu()
//-----------------
repita
   limpa()
   se op = 2 entao
      repita
         escreval(" ********************")
         escreval(" * 1 - VER ACERTOS  *")
         escreval(" * 2 - VER ERROS    *")
         escreval(" * 3 - VER GABARITO *")
         escreval(" * 4 - FECHAR PROVA *")
         escreval(" ********************")
         leia(op2)
         se op2 = 1  entao
            escreval("O número de ACERTOS são:",certos)
            escreval()
            limpa()
         fimse

         se op2 = 2 entao
            escreval("O número de ERROS são:",erros)
            escreval()
            limpa()
         fimse

         se op2 = 3 entao
            para q de 1 ate 10 faca
            aux <- randi(10) + 1
               para r de 6 ate 6 faca
                  escreva(q, "°")
                  escreval (quest[q,aux])
               fimpara
            fimpara
            escreval()
            limpa()
         fimse
         

         se op2 = 4 entao

         fimse
      ate op2 = 4
   fimse

   se op = 3 entao
   fimse

Fimalgoritmo

 

  • Obrigado 1
Postado

@Biscatão da Boate    dentro do loop r coloque aux também :

espera  : inteiro


se op2 = 3 entao
  para q de 1 ate 10 faca
    aux <- randi(10) + 1
       para r de 1 ate 6 faca
          escreva(q, "°")
          escreval (quest[q,r])
       fimpara
    fimpara
    escreval("     Tecle enter !")
    leia(espera)
    escreval()
    limpa()
fimse

para r de 2 ate 5 faca
    escreval(quest[aux,r])
 fimpara

 

Postado

@Biscatão da Boate   se é aleatório , ele mostrar o que ele quiser ,  mas você pode controlar isso armazenado , em um vetor , as questões que já foram mostradas e verifica para ver se a escolhida já foi mostrada , se sim escolher outra . e se as dez já foi mostradas então passe para outras coisas a fazer  ou termine o programa

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!