Ir ao conteúdo
  • Cadastre-se
WillWillian

VisualG Criar um analisador de acertos Visualg

Recommended Posts

Boa tarde, sou iniciante não sei programar ainda mais quero aprender 

peguei esse codigo para estudos para tentar compriender como foi feito e aprender a programar estou lento nessa parte 

testei ele e entendi mais o menos como funciona 

mais minha duvida é o seguinte  o programa ele escolhe duas vezes 100 numeros de 200 certo

como faço para criar um analisador de 30 numeros que vou sorter ele vai fazer uma varredura nos dois 
vetores de 100 e vai comparar com os 30 numeros que eu sortear e vai me dizer o quanto acertou 

nesses 30  que eu sortear quero digitar no caso 

por exemplo no primeiro 100 de 30 so tem 8 entao o programa ele me informa com uma messagem
tipo vetor 100_1 voce so acertou 8 numeros 
     vetor 100_2 voce so acertou 12 numeros 

algo parecido como isso me desculpe se não soube explicar e por que sou iniciante 
e e difícil aplicar logica assim 

alguem me ajuda com esse simples codigo so para estudos e poder entender como e feito a logica
com legenda por favor 
muito obrigado e obrigado juca por indicar forum.

 

algoritmo "varredura analisador de numero"
var
   vetor_200   :vetor [1..200] de inteiro
   vetor_100_1 :vetor [1..100] de inteiro
   vetor_100_2 :vetor [1..100] de inteiro



   p       :inteiro
   i,j     :inteiro
   OK      :logico
   aguardar:caracter
Inicio
//gera os 200 números do vetor inicial
escreval("GERANDO OS 200 NÚMEROS INICIAIS...")
para p de 1 ate 200 faca
   vetor_200[p]:=p
fimpara
escreval("Tecle Enter")
leia(aguardar)
escreval("NÚMEROS GERADOS COM SUCESSO!")

//exibe os 200 números gerados
escreval()
escreval("Aqui estão os 200 números iniciais")
p:=1
para i de 1 ate 20 faca //cada linha
   para j de 1 ate 10 faca //cada coluna
      escreva(vetor_200[p]:2," - ")
      p:=p+1
   fimpara
   escreval//para pular para a linha de baixo
fimpara
escreval


//Sorteia os primeiro 100 números do vetor
escreval("Vamos Escolher Aleatoriamente Os Primeiros 100 números")
para i de 1 ate 100 faca
  repita  // repite se precisar
    ok := verdadeiro
    p:=randi(200)+1  // gera um número aleatorio
    se vetor_200[p]=0 ENTÃO//numero foi deletado
      ok := falso
    fimse
    para j de 1 ate 100 faca
      se ok = verdadeiro ENTÃO
        se vetor_100_1[j] = vetor_200[p] ENTÃO//se no vetor já haver o numero gerado
          ok := falso// b recebe o valor 2 para repetir e escolher outro numero
          interrompa
        fimse
      fimse
    fimpara
    se ok = verdadeiro ENTÃO
      vetor_100_1[i] := vetor_200[p] 
    fimse
  ate ok
fimpara
escreval("Os Primeiros 100 Números Foram Gerados Com Sucesso")
//escrevando os primeiros números gerados aleatórios
escreval("Aqui Estão Os primeiros 100 Números Gerados Aleatórios")
p:=1
para i de 1 ate 10 faca
para j de 1 ate 10 faca
    escreva(vetor_100_1[p]," - ")
    p := p+1
  fimpara
  escreval//para pular para a linha de baixo
  fimpara
escreval("Tecle Enter")
leia(aguardar)



//Sorteia os primeiro 100 números do vetor
escreval("Vamos Escolher Aleatoriamente Os Primeiros 100 números")
para i de 1 ate 100 faca
  repita  // repite se precisar
    ok := verdadeiro
    p:=randi(200)+1  // gera um número aleatorio
    se vetor_200[p]=0 ENTÃO//numero foi deletado
      ok := falso
    fimse
    para j de 1 ate 100 faca
      se ok = verdadeiro ENTÃO
        se vetor_100_2[j] = vetor_200[p] ENTÃO//se no vetor já haver o numero gerado
          ok := falso// b recebe o valor 2 para repetir e escolher outro numero
          interrompa
        fimse
      fimse
    fimpara
    se ok = verdadeiro ENTÃO
      vetor_100_2[i] := vetor_200[p] 
    fimse
  ate ok
fimpara
escreval("Os Primeiros 100 Números Foram Gerados Com Sucesso")
//escrevando os primeiros números gerados aleatórios
escreval("Aqui Estão Os primeiros 100 Números Gerados Aleatórios")
p:=1
para i de 1 ate 10 faca
para j de 1 ate 10 faca
    escreva(vetor_100_2[p]," - ")
    p := p+1
  fimpara
  escreval//para pular para a linha de baixo
  fimpara
escreval("Tecle Enter")
leia(aguardar)
fimalgoritmo

 

 

Editado por Simon Viegas
Alterado tipo de tag CODE para C Languages (referente as cores)
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

@WillWillian, simplifiquei o código:

algoritmo "FCdH"
var
   vetor_100_1 :vetor [1..100] de inteiro

   numSorteado :inteiro
   p,i,j       :inteiro
   OK          :logico
   aguardar    :caracter

inicio
//sorteia os 100 números do vetor 1
escreval()
para i de 1 ate 100 faca //para cada um dos novos números do vetor
   repita
      ok := verdadeiro //inicializa como número não repetido
      numSorteado:=randi(200)+1 //gera um número aleatorio (entre 1 e 200, incluíndos)
      para j de 1 ate i-1 faca //para cada um dos números já sorteados
         se vetor_100_1[j] = numSorteado ENTÃO //se o número já existe
            ok := falso//marca como repetido
            interrompa //para de verificar (pois já achou um repetido)
         fimse
      fimpara
   ate ok //até achar um número não repetido
   vetor_100_1[i] := numSorteado //armazena o número sorteado
fimpara

//Mostra os números sorteados
escreval("100 números aleatórios (enter 1 e 200, não repetidos)")
p:=1
para i de 1 ate 10 faca
   para j de 1 ate 10 faca
      escreva(vetor_100_1[p]:3," - ")
      p := p+1
   fimpara
   escreval//para pular para a linha de baixo
fimpara
escreval("Tecle Enter")
leia(aguardar)





fimalgoritmo

 

 

Pelo que eu entendi, você quer verificar algo como: "De 30 números diferentes entre 1 e 200 (inclusos), quantos deles estão numa lista de 100 números diferentes também entre 1 e 200 (inclusos)".

 

Você precisa inicialmente das duas listas:

- Dos 100 números;

- Dos 30 números.

 

Aí após verifica quantos (e/ou quais) números dos 30 estão nos 100.

 

A geração dos 100 está já encaminhada.

 

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda, mais não é dessa forma que pensei, quando ele escolhe os 100  

o que seria agora fazer pedir para o usuário digitar 30 números e o programa fazer comparação com o 100 

por exemplo se no caso o dos 30 que digitei dentro dos 100 tinha 8 

então o programa ele mostra na tela vocÊ acertou 8 pontos  suponha que ele acertou 25 ele mostra parabéns você acertou 25 pontos 

queria assim não consigo pensar ainda logicamente 9 dias de estudos  é complicado mais ta interessante 

 

aqui esta o mesmo código só mais simples  

 

 

algoritmo "varredura analisador de numero"
var
   vetor_200   :vetor [1..200] de inteiro
   vetor_100_1 :vetor [1..100] de inteiro



   p,analisador       :inteiro
   i,j     :inteiro
   OK      :logico
   aguardar:caracter
Inicio
//gera os 200 números do vetor inicial
escreval("GERANDO OS 200 NÚMEROS INICIAIS...")
para p de 1 ate 200 faca
   vetor_200[p]:=p
fimpara
escreval("Tecle Enter")
leia(aguardar)
escreval("NÚMEROS GERADOS COM SUCESSO!")

//exibe os 200 números gerados
escreval()
escreval("Aqui estão os 200 números iniciais")
p:=1
para i de 1 ate 20 faca //cada linha
   para j de 1 ate 10 faca //cada coluna
      escreva(vetor_200[p]:2," - ")
      p:=p+1
   fimpara
   escreval//para pular para a linha de baixo
fimpara
escreval


//Sorteia os primeiro 100 números do vetor
escreval("Vamos Escolher Aleatoriamente Os Primeiros 100 números")
para i de 1 ate 100 faca
  repita  // repite se precisar
    ok := verdadeiro
    p:=randi(200)+1  // gera um número aleatorio
    se vetor_200[p]=0 ENTÃO//numero foi deletado
      ok := falso
    fimse
    para j de 1 ate 100 faca
      se ok = verdadeiro ENTÃO
        se vetor_100_1[j] = vetor_200[p] ENTÃO//se no vetor já haver o numero gerado
          ok := falso// b recebe o valor 2 para repetir e escolher outro numero
          interrompa
        fimse
      fimse
    fimpara
    se ok = verdadeiro ENTÃO
      vetor_100_1[i] := vetor_200[p] 
    fimse
  ate ok
fimpara
escreval("Os Primeiros 100 Números Foram Gerados Com Sucesso")
//escrevando os primeiros números gerados aleatórios
escreval("Aqui Estão Os primeiros 100 Números Gerados Aleatórios")
p:=1
para i de 1 ate 10 faca
para j de 1 ate 10 faca
    escreva(vetor_100_1[p]," - ")
    p := p+1
  fimpara
  escreval//para pular para a linha de baixo
  fimpara
escreval("Tecle Enter")
leia(aguardar)

escreval("Digite 30 números")
leia(analisador)

fimalgoritmo

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

12 horas atrás, WillWillian disse:

[...] quando ele escolhe os 100 o que seria agora fazer pedir para o usuário digitar 30 números e o programa fazer comparação com o 100.

 

Resumindo:

- Gera os 100 números aleatórios;

- Ler os 30 números escolhidos;

- Contabiliza quantos dos 30 números contém nos 100.

- Exibe o resultado

 

 

O trecho que eu postei já faz a primeira parte:

 

20 horas atrás, Simon Viegas disse:

//sorteia os 100 números do vetor 1
escreval()
para i de 1 ate 100 faca //para cada um dos novos números do vetor
   repita
      ok := verdadeiro //inicializa como número não repetido
      numSorteado:=randi(200)+1 //gera um número aleatorio (entre 1 e 200, incluíndos)
      para j de 1 ate i-1 faca //para cada um dos números já sorteados
         se vetor_100_1[j] = numSorteado ENTÃO //se o número já existe
            ok := falso//marca como repetido
            interrompa //para de verificar (pois já achou um repetido)
         fimse
      fimpara
   ate ok //até achar um número não repetido
   vetor_100_1[i] := numSorteado //armazena o número sorteado
fimpara

 

Ou seja, o vetor vetor_100[] estará com 100 números aleatórios (entre 1 e 100, inclusos; e não repetidos). Falta ler os 30, fazer as contas e exibir o resultado.

 

 

 

Segue uma base:

algoritmo "FCdH"
var
   <declaração das variáveis necessárias>
  

inicio

//GERA O VETOR COM 100 NÚMEROS ALEATÓRIOS
<Aqui você coloca o código que eu postei que gera os 100 números>

  
//LER OS 30 NÚMEROS QUE SERÃO COMPARADOS COM OS 100 DO VETOR
<implemente a leitura dos 30 números que quer comparar, por exemplo,
 use um vetor chamado vetor_30>

  
//VERIFICA QUANTOS DOS 30 NÚMEROS ESTÃO NO VETOR DE 100
<verifique quantos dos 30 números estão no vetor dos 100, ou seja, 
 quantos números do vetor_30 são iguais a algum número do vetor_100_1>

  
//EXIBE O RESULTADO
<mostre o resultado na tela>
     
fimalgoritmo

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa noite, obrigado pela ajuda mas nao consegui fazer e é como voce disse gera os 100 depois eu digito 30 e ele compara 

com os 100 e depois escreve quantos acertou dentro dos 100 tentei mais nao consegui e complicado isso

 

olha o código:

Spoiler

algoritmo "FCdH"
var
   vetor_100_1 :vetor [1..100] de inteiro
   vetor_30    :vetor [1..30] de inteiro
   numSorteado :inteiro
   p,i,j       :inteiro
   OK          :logico
   aguardar    :caracter

inicio
//sorteia os 100 números do vetor 1
escreval()
para i de 1 ate 100 faca //para cada um dos novos números do vetor
   repita
      ok := verdadeiro //inicializa como número não repetido
      numSorteado:=randi(200)+1 //gera um número aleatorio (entre 1 e 200, incluíndos)
      para j de 1 ate i-1 faca //para cada um dos números já sorteados
         se vetor_100_1[j] = numSorteado ENTÃO //se o número já existe
            ok := falso//marca como repetido
            interrompa //para de verificar (pois já achou um repetido)
         fimse
      fimpara
   ate ok //até achar um número não repetido
   vetor_100_1[i] := numSorteado //armazena o número sorteado
fimpara

//Mostra os números sorteados
escreval("100 números aleatórios (enter 1 e 200, não repetidos)")
p:=1
para i de 1 ate 10 faca
   para j de 1 ate 10 faca
      escreva(vetor_100_1[p]:3," - ")
      p := p+1
   fimpara
   escreval//para pular para a linha de baixo
fimpara
escreval("Tecle Enter")
leia(aguardar)

//LER OS 30 NÚMEROS QUE SERÃO COMPARADOS COM OS 100 DO VETOR
para i de 1 ate 30 faca
leia(i)
vetor_30[i] = i


//VERIFICA QUANTOS DOS 30 NÚMEROS ESTÃO NO VETOR DE 100
se vetor_30[i] = vetor_100_1[i] entao
vetor_100[i] = vertor_30[i]
fimse
fimpara

//EXIBE O RESULTADO
escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 1 entao
escreval(vetor_30[i],voce acertou 1)
fimse
fimpara
escreval
fimpara
escreval

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 2 entao
escreval(vetor_30[i],voce acertou 2)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 3 entao
escreval(vetor_30[i],voce acertou 3)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 4 entao
escreval(vetor_30[i],voce acertou 4)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 5 entao
escreval(vetor_30[i],voce acertou 5)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 6 entao
escreval(vetor_30[i],voce acertou 6)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 7 entao
escreval(vetor_30[i],voce acertou 7)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 8 entao
escreval(vetor_30[i],voce acertou 8)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 9 entao
escreval(vetor_30[i],voce acertou 9)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 10 entao
escreval(vetor_30[i],voce acertou 10)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 11 entao
escreval(vetor_30[i],voce acertou 11)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 12 entao
escreval(vetor_30[i],voce acertou 12)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 13 entao
escreval(vetor_30[i],voce acertou 13)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 14 entao
escreval(vetor_30[i],voce acertou 14)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 15 entao
escreval(vetor_30[i],voce acertou 15)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 16 entao
escreval(vetor_30[i],voce acertou 16)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 17 entao
escreval(vetor_30[i],voce acertou 17)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 18 entao
escreval(vetor_30[i],voce acertou 18)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 19 entao
escreval(vetor_30[i],voce acertou 19)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] =20 entao
escreval(vetor_30[i],voce acertou 20)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 21 entao
escreval(vetor_30[i],voce acertou 21)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 22 entao
escreval(vetor_30[i],voce acertou 22)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 23 entao
escreval(vetor_30[i],voce acertou 23)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 24 entao
escreval(vetor_30[i],voce acertou 24)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 25 entao
escreval(vetor_30[i],voce acertou 25)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 26 entao
escreval(vetor_30[i],voce acertou 26)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 27 entao
escreval(vetor_30[i],voce acertou 27)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 28 entao
escreval(vetor_30[i],voce acertou 28)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 29 entao
escreval(vetor_30[i],voce acertou 29)
fimse
fimpara
escreval
fimpara

escreval
para i de 1 ate 10 faca
para j de 1 ate 3 faca
se vetor_30[i] = 30 entao
escreval(vetor_30[i],voce acertou 30)
fimse
fimpara
escreval
fimpara

fimalgoritmo

 

Editado por Simon Viegas
Inserir tag SPOILE
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@WillWillian     para pegar os número do usuário , você precisa usar uma variável  que não seja a do controle do laço de repetição ,  e então depois de pegar o número , comparar com todos os números que estão no vetor_30 , que é onde estão os números informados pelo Usuário , fazendo assim para que não existam números repetidos ,  e essa parte pode se assim :

//LER OS 30 NÚMEROS QUE SERÃO COMPARADOS COM OS 100 DO VETOR
//num,j : inteiro                   // colocar essa variável lá em cima no inicio 
para i de 1 ate 30 faca           //pegando 30 numeros
  repita                          // repete se for um número repetido
    ok:=falso                     // controla a repetição dos números 
    escreva("Digite o",i,"º numero ")
    leia(num)                     // pega um número 
    para j de 1 ate 30 faca       // compara o número com os 100 numeros gerados aleatorio
      se vetor_30[j] = num ENTÃO  // se numero digitado for igual algum dos 100 gerados
        ok:=verdadeiro            // informa que o número já foi digitado antes
        escreval("Você Já Inseriu Esse Número") // mostra mensagem
        interrompa                // interompe o laço pois numero já existe 
      fimse
    fimpara
  ate ok = falso                  // repete até que o número não seja repetido
  vetor_30[i] := num               // coloca o número no vetor_30 
fimpara

e depois para verificar os acertos  você não precisa comparar cada número , pois para isso é melhor usar um laço de repetição que pode ser assim  :

contador:=0                               // zerando o contador de acerto  senão haverá erros
para j de 1 ate 100 faca                  // aqui são os 100 números gerados aleatorios
  para k de 1 ate 30 faca                 // aqui são os 30 números informados pelo Usuário 
    se vetor_100_1[j] = vetor_30[k] ENTÃO //verifica se for igual, então acertou
      contador := contador + 1            // incrementa o valor do contador em hum
      interrompa                          // interrompe pois acertou esse número
    fimse
  fimpara
fimpara
escreval("Caro usuário Você Acertou ",contador," Números . . . !")// mostra quantos acertos

 

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos.

 

Peguei as sugestões do @devair1010 e tentei dar uma revisada. Vejam:

algoritmo "FCdH"
var
   vetor_100_1 :vetor [1..100] de inteiro
   vetor_30    :vetor [1..30] de inteiro
   numSorteado :inteiro
   p,i,j       :inteiro
   OK          :logico
   aguardar    :caracter
   num         :inteiro
   contador    :inteiro
   
inicio
//SORTEIA OS 100 NÚMEROS DO VETOR
escreval()
para i de 1 ate 100 faca //para cada um dos novos números do vetor
   repita
      ok := verdadeiro //inicializa como número não repetido
      numSorteado:=randi(200)+1 //gera um número aleatorio (entre 1 e 200, incluíndos)
      para j de 1 ate i-1 faca //para cada um dos números já sorteados
         se vetor_100_1[j] = numSorteado ENTÃO //se o número já existe
            ok := falso//marca como repetido
            interrompa //para de verificar (pois já achou um repetido)
         fimse
      fimpara
   ate ok //até achar um número não repetido
   vetor_100_1[i] := numSorteado //armazena o número sorteado
fimpara



//MOSTRA OS NÚMEROS SORTEADOS
escreval("100 números aleatórios (enter 1 e 200, não repetidos)")
p:=1
para i de 1 ate 10 faca
   para j de 1 ate 10 faca
      escreva(vetor_100_1[p]:3," - ")
      p := p+1
   fimpara
   escreval//para pular para a linha de baixo
fimpara
escreval()
escreva ("Pressione enter para continuar")
leia(aguardar)



//LER OS 30 NÚMEROS QUE SERÃO COMPARADOS COM OS 100 DO VETOR
para i de 1 ate 30 faca              //pegando 30 numeros
   repita                            //repete se for um número repetido
      {ok:=falso                     //controla a repetição dos números}
      ok:=VERDADEIRO                 //controla a repetição dos números}
      {escreva("Digite o",i,"º numero ")}
      escreva("Digite o ",i:2,"º numero ")
      ALEATORIO 1,200 //HABILITA O RECURSO PARA AUTOPREENCHER OS LEIA(). (Num. entre 1 E 200, inclusos)
      leia(num)                      //pega um número
      ALEATORIO OFF //DESABILITA O RECURSO (só os leia() que estão no meio que autopreencherá)
      {para j de 1 ate 30 faca       //compara o número com os 100 numeros gerados aleatorio}
      para j de 1 ate i-1 faca       //compara o número com os numeros já digistados
         {se vetor_30[j] = num ENTÃO //se numero digitado for igual algum dos 100 gerados}
         se vetor_30[j] = num ENTÃO  //se numero digitado for igual algum dos já digistados}
            {ok:=verdadeiro          //informa que o número já foi digitado antes}
            ok:=FALSO                //marca como sendo repetido ("não está OK")}
            escreval("Você Já Inseriu Esse Número") //mostra mensagem
            {interrompa              //interompe o laço pois numero já existe}
            interrompa               //interompe o laço pois já foi identificado que já existe}
         fimse
      fimpara
   {ate ok = falso                   //repete até que o número não seja repetido}
   ate ok = VERDADEIRO               //repete até que o número não seja repetido (está OK)}
   vetor_30[i] := num                //coloca o número no vetor_30
fimpara



//VERIFICA QUANTOS DOS 30 NÚMEROS ESTÃO NO VETOR DE 100
contador:=0                               //zerando o contador de acerto  senão haverá erros (obs.: na verdade não haveria erros, mas é uma boa prática!!)
para i de 1 ate 100 faca                  //aqui são os 100 números gerados aleatorios
  para j de 1 ate 30 faca                 //aqui são os 30 números informados pelo Usuário
    se vetor_100_1[i] = vetor_30[j] ENTÃO //verifica se for igual, então acertou
      contador <- contador + 1            //incrementa o valor do contador em hum
      {interrompa                          //interrompe pois acertou esse número}
      interrompa                          //interrompe pois já identificou que já acertou}
    fimse
  fimpara
fimpara



//EXIBE O RESULTADO
escreval()
escreval("Caro usuário Você Acertou ",contador," Números . . . !")// mostra quantos acertos

fimAlgoritmo

 

Críticas, sugestões, dúvidas?

 

 

 

@WillWillian, daí tenta entender cada uma das etapas. Perceba que está seguindo o proposto inicialmente:

 

Em 21/08/2018 às 08:39, Simon Viegas disse:

Segue uma base:


//GERA O VETOR COM 100 NÚMEROS ALEATÓRIOS
  
//LER OS 30 NÚMEROS QUE SERÃO COMPARADOS COM OS 100 DO VETOR
  
//VERIFICA QUANTOS DOS 30 NÚMEROS ESTÃO NO VETOR DE 100
 
//EXIBE O RESULTADO

 

Foi proposto UMA forma de O QUE poderia fazer. Ai, entraria COMO fazer cada uma das etapas, ou seja, "como faço para gerar números aleatórios no Visualg"? no caso, já tinha uma base por um código "achado" no Fórum ou na internet.

 

O raciocínio da parte da leitura dos dados poderia iniciar com algo assim:

//LER OS 30 NÚMEROS QUE SERÃO COMPARADOS COM OS 100 DO VETOR
para i de 1 ate 30 faca              //pegando 30 numeros
   escreva("Digite o ",i:2,"º numero ")
   leia(num)                      //pega um número
   fimpara

Nesse caso, o usuário que teria a "missão" de incluir os números não repetidos. Entende? o importante era ter os números. Então, como o enunciado pode está exigindo que o programa verifique isso, ou seja, não permitindo que armazene repetidos, aí entra a parte do código proposto por @devair1010... que faz a analise do novo número lido com os contidos no vetor (dos números lidos), e só aceitando um novo quando ele não é igual a algum deles.

 

Na verificação, compara cada posição dos números do usuário (vetor de 30) com cada posição dos números que foram sorteados (vetor do 100). Cada vez que for igual, vai incrementando um contator (de acertos). Perceba que o interrompa entra como um mecanismo de "aperfeiçoamento", pois, como só precisa ser igual a um, logo não precisa continuar comparando com os outros... assim como foi "garantido" que não há números repetidos no vetor de 100, mesmo que continuasse, não acharia outro igual (já que naquele momento, já foi encontrado o igual". Ou "melhoria" foi comparar de 1 até os já lidos, em vez de 1 até o tamanho da lista... pois só nos interessa o que já foi lido.

 

Por ai vai.

 

 

 

 

O programa pode ser revisado.. veja, talvez faria mais sentido primeiro ler os 30 números, para só depois mostrar os 100 sorteados, ou seja, do jeito que está, o usuário já tem os números que já foram sorteados e inseriria só números da lista! A depender do contexto, o sorteio em si do 100 deveria ser feito DEPOIS de ter lido os números.

 

obs.: "mostrar os números lidos" e "sortear os números lidos" são coisas distintas. Por sinal, essa parte de "listar os 100 números", lá do código original, tem meio que uma finalidade de ajudar nos testes... verificar se está sorteando corretamente ou não. Não necessariamente precisaria mostrar... 

 

SUGESTÃO

Que tal ajustar o código para simular sorteios da LOTOMANIA? a base seria praticamente a mesma, apenas fazendo algumas alterações nos textos e outras detalhes que são relacionados ao "jogo de azar".

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas         tem razão , ali no inicio o @WillWillian não informa se pode ou não haver números repetidos entre os trinta e também eu não havia observado que ele disse que queria sortear os 30 números ,  e por isso coloquei para o usuário informar esses 30 números , então para modificar isso pode-se colocar essa linhas no lugar do

leia( num)  :

num:=randi(100)+1

isso se os números forem de hum até 100  .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite obrigado pela ajuda e exemplos gostei muito so nao entendi isso aqui contador := contador + 1

e contador =0 falso=ok e verdadeiro=ok 

so mais uma duvida como faço para colocar todo esses processo em opção salvar em texto depois abrir ele novamente e fazer a varredura de novo 

 

e tambem o que eu mudo para converter esses codigo em c e c++ 

ele salva em arquivo texto e pelo programa ele abre o arquivo texto ja existente e faz o analise novamente é possivel isso

quero estudar esse codigo e escrever ele em c e c++ 

 

desculpe pela demora e muito obrigado.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@WillWillian      no visualg é complicado usar arquivos , para guardar os resultados ,  então seria melhor mesmo usar a linguagem c / c++ para isso ,   e para passar esse código para a linguagem c  você precisa ir substituindo os comandos , por exemplo esse comando 

para j de 1 ate 100 faca
      . 
     .
fimpara

em c seria assim :

for(j=1;j<=100;j++){
        .
        .
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#

Sobre:

13 horas atrás, WillWillian disse:

Boa noite obrigado pela ajuda e exemplos gostei muito so nao entendi isso aqui contador := contador + 1

e contador =0 falso=ok e verdadeiro=ok 

 

A variável contador armazena a quantidade de números acertados, ou seja, serve para ir "contando" a medida que vai encontrando um acerto.

 

Sobre o falso=ok e verdadeiro=ok é contrário (ok=VERDAREIRO ou ok=FALSO). A variável OK é do tipo lógico, ou seja, tem apenas 2 possível estados (valores). No contexto, VERDADEIRO usamos para indicar que não é repetido e FALSO para indicar que é repetido, logo precisando repetir o processo.

 

A variável OK poderia ser de qualquer tipo. A questão é que eu preciso que ele possa ter pelo menos 2 estados diferentes... pois quando ele tiver num estado significa uma coisa, quanto tiver com outro significará outro. Por ex.:

 

Se usasse:

OK :inteiro

 

Poderia dizer que o valor 7 significa que não houve repetição e o valor 8329 para indicar que o número é repetido. Não importa... a variável OK foi definida para servi para indicar se vai precisar repetir ou não.

 

Foi usado o tipo lógico apenas porque se encaixa bem, já que esse tipo só tem duas possibilidades e código precisa justamente só de 2.

 

 

2#

Sobre:

13 horas atrás, WillWillian disse:

e tambem o que eu mudo para converter esses codigo em c e c++ 

ele salva em arquivo texto e pelo programa ele abre o arquivo texto ja existente e faz o analise novamente é possivel isso

quero estudar esse codigo e escrever ele em c e c++ 

 

desculpe pela demora e muito obrigado.

 

 

Eu não entendi essa parte. São perguntas? mas em fim. Em relação ao C ou C++, sugiro que comece a estudar do zero... ou seja, apenas comece a estudar a C ou C++ (obs.: são linguagens distintas!) e tentar fazer exercícios correspondentes ao que está estudando. Não acho interessante tentar traduzir um código. Vá pegando exercícios mais simples e resolvendo...

Editado por Simon Viegas
  • 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

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

×