Ir ao conteúdo
  • Cadastre-se

VisualG Problemas algoritmo criar um questionário com matriz.


Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@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
Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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

 

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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

 

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

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