Ir ao conteúdo
  • Cadastre-se
WillWillian

VisualG Números pares e impares VisualG

Recommended Posts

Boa tarde, peguei esse código aqui mesmo no forum e fiz algumas modificações e minha duvida é quando ele gera aleatorio os 80 números

dos 100 desses 80 ele fizesse outro processo aleatorio tambem so que 25 numeros impares e 25 numeros pares escolhido do 80 como faz 

isso alguem poderia me ajudar obrigado.

 

algoritmo "Algoritmo exercicio de numeracao3"
var
   vetor_100   :vetor [1..100] de inteiro //vetor armazena 100posiçoes
   vetor_80_1 :vetor [1..80] de inteiro //vetor armazena 80 posições





   p       :inteiro  //auxiliar para posicionar o vetor
   i,j     :inteiro  //auxiliar para percorrer o vetor
   OK      :logico   //flag para verificar se a etapa foi realizada com sucesso
   aguardar:caracter //variável criada apenas para aguardar um ENTER na interação com o usuário

Inicio
MudaCor("Preto","Frente") --> caracter Azul
MudaCor("Branco","Fundos") --> fundo branco

//gera os 100 números do vetor inicial
escreval("GERANDO OS 100 NÚMEROS INICIAIS...")
para p de 1 ate 100 faca
   vetor_100[p]:=p
fimpara
escreval("Tecle Enter")
leia(aguardar)
escreval("NÚMEROS GERADOS COM SUCESSO!")

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


 
//Sorteia os primeiro 80 números do vetor de 100 posições
escreval("Vamos Escolher Aleatoriamente Os Primeiros 80 Números Dos 100")
para i de 1 ate 80 faca  
  repita  // repite se precisar
    ok := verdadeiro
    p:=randi(100)+1  // gera um número aleatorio
    se vetor_100[p]=0 ENTÃO//numero foi deletado
      ok := falso
    fimse
    para j de 1 ate 80 faca//verifica os numeros
      se ok = verdadeiro ENTÃO //se o número não houver sido deletado
        se vetor_80_1[j] = vetor_100[p] ENTÃO//se no vetor já haver o numero gerado
          ok := falso
          interrompa
        fimse
      fimse
    fimpara
    se ok = verdadeiro ENTÃO
      vetor_80_1[i] := vetor_100[p] 
    fimse
  ate ok
fimpara
escreval("Os Primeiros 80 Números Foram Gerados Com Sucesso")
//escrevando os primeiros números gerados aleatórios
escreval("Aqui Estão Os primeiros 80 Números Gerados Aleatórios")
p:=1
para i de 1 ate 16 faca
para j de 1 ate 5 faca
    escreva(vetor_80_1[p]," - ")
    p := p+1
  fimpara
  escreval//para pular para a linha de baixo
  fimpara
fimalgoritmo

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@WillWillian   para saber se um número é par ou ímpar você usa o operador lógico mod , então esse código poderia sr assim  :

algoritmo "Algoritmo exercicio de numeracao3"
var
   vetor_100   : vetor [1..100] de inteiro //vetor armazena 100posiçoes
   vetor_80_1  : vetor [1..80 ] de inteiro  //vetor armazena 80 posições
   vetor_25_par: vetor[1..25  ] de inteiro
   vetor_25_impar: vetor[1..25] de inteiro
   p           : inteiro                   //auxiliar para posicionar o vetor
   i,j,aux    : inteiro                   //auxiliar para percorrer o vetor
   OK          : logico                    //flag para verificar se a etapa foi realizada com sucesso
   aguardar    : caracter                  //variável criada apenas para aguardar um ENTER na interação com o usuário
Inicio
  //MudaCor("Preto","Frente") --> caracter Azul
  //MudaCor("Branco","Fundos") --> fundo branco
  //gera os 100 números do vetor inicial
  escreval("GERANDO OS 100 NÚMEROS INICIAIS...")
  para p de 1 ate 100 faca
   vetor_100[p]:=p
  fimpara
  escreval("Tecle Enter")
  leia(aguardar)
  escreval("NÚMEROS GERADOS COM SUCESSO!")

  //exibe os 100 números gerados
  escreval
  escreval("Aqui estão os 100 números iniciais")
  p:=1
  para i de 1 ate 10 faca //cada linha
    para j de 1 ate 10 faca //cada coluna
      escreva(vetor_100[p]:4)
      p:=p+1
    fimpara
    escreval//para pular para a linha de baixo
  fimpara
  //Sorteia os primeiro 80 números do vetor de 100 posições
  escreval("Vamos Escolher Aleatoriamente Os Primeiros 80 Números Dos 100")
  para i de 1 ate 80 faca
    repita                       // repite se precisar
      ok := verdadeiro
      p:=randi(100)+1            // gera um número aleatorio
      se vetor_100[p]=0 ENTÃO    //numero foi deletado
        ok := falso
      fimse
      para j de 1 ate 80 faca    //verifica os numeros
        se ok = verdadeiro ENTÃO //se o número não houver sido deletado
          se vetor_80_1[j] = vetor_100[p] ENTÃO//se no vetor já houver o numero gerado
            ok := falso
            interrompa
          fimse
        fimse
      fimpara
      se ok = verdadeiro ENTÃO
        vetor_80_1[i] := vetor_100[p]
      fimse
    ate ok
  fimpara
  escreval("Os Primeiros 80 Números Foram Gerados Com Sucesso")
  //escrevando os primeiros números gerados aleatórios
  escreval("Aqui Estão Os primeiros 80 Números Gerados Aleatórios")
  p:=1
  para i de 1 ate 16 faca
    para j de 1 ate 5 faca
      escreva(vetor_80_1[p]:4)
      p := p+1
    fimpara
    escreval//para pular para a linha de baixo
  fimpara
  escreval("Vamos Gerar Os Vinte e Cinco Números Pares")
  para i de 1 ate 25 faca
    repita                       // repite se precisar
      ok := verdadeiro
      p:=randi(80)+1            // gera um número aleatorio
      se vetor_80_1[p] mod 2 <> 0 ENTÃO    //numero é impar ?
        ok := falso
      senao
        para j de 1 ate 25 faca    //verifica se já tem esse numero
          se vetor_80_1[p] = vetor_25_par[j] ENTÃO//se no vetor já houver o numero gerado
            ok := falso
            interrompa
          fimse
        fimpara
        se ok = verdadeiro ENTÃO
          vetor_25_par[i] := vetor_80_1[p]
        fimse
      fimse
    ate ok
  fimpara
  para i de 1 ate 24 faca
    para j de i+1 ate 25 faca
      se vetor_25_par[i] >  vetor_25_par[j] ENTÃO
        aux    := vetor_25_par[i]
        vetor_25_par[i] := vetor_25_par[j]
        vetor_25_par[j] := aux
      fimse
    fimpara
  fimpara
  escreval("Aqui estão Os Vinte e Cinco Pares")
  para i de 1 ate 25 faca
    escreva(vetor_25_par[i]:4)
    se (i = 10) ou ( i=20) entao
      escreval
    fimse
  fimpara
  escreval("Vamos Gerar Os Vinte e Cinco Números ímPares")
  para i de 1 ate 25 faca
    repita                       // repite se precisar
      ok := verdadeiro
      p:=randi(80)+1            // gera um número aleatorio
      se vetor_80_1[p] mod 2 = 0 ENTÃO    //numero é impar ?
        ok := falso
      senao
        para j de 1 ate 25 faca    //verifica se já tem esse numero
          se vetor_80_1[p] = vetor_25_impar[j] ENTÃO//se no vetor já houver o numero gerado
            ok := falso
            interrompa
          fimse
        fimpara
        se ok = verdadeiro ENTÃO
          vetor_25_impar[i] := vetor_80_1[p]
        fimse
      fimse
    ate ok
  fimpara
  para i de 1 ate 24 faca
    para j de i+1 ate 25 faca
      se vetor_25_impar[i] >  vetor_25_impar[j] ENTÃO
         aux               := vetor_25_impar[i]
         vetor_25_impar[i] := vetor_25_impar[j]
         vetor_25_impar[j] := aux
      fimse
    fimpara
  fimpara
  escreval("Aqui estão Os Vinte e Cinco ímPares")
  para i de 1 ate 25 faca
    escreva(vetor_25_impar[i]:4)
    se (i = 10) ou ( i=20) entao
      escreval
    fimse
  fimpara
fimalgoritmo

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado Devair1010 eu testei o codigo e funcionou certinho do jeito que queria 
so tive algumas duvidas o que esta acontecendo aqui no codigo por que eu olhei um pouco parece
que o os dois estão igual so muda o vetor_25_impar e vetor_25_par 
o que tem a ver tambem o número 4 essa parte aqui nao entendi tambem

para i de 1 ate 24 faca
    para j de i+1 ate 25 faca
      se vetor_25_par >  vetor_25_par[j] ENTÃO
        aux    := vetor_25_par[i]
        vetor_25_par := vetor_25_par[j]
        vetor_25_par[j] := aux 

obrigado pela ajuda  e qual a diferença entre eles para saber que e impar e par.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@WillWillian     qual número 4 ? ,                    essa parte :

para i de 1 ate 24 faca
    para j de i+1 ate 25 faca
      se vetor_25_par >  vetor_25_par[j] ENTÃO
        aux    := vetor_25_par
        vetor_25_par := vetor_25_par[j]
        vetor_25_par[j] := aux 
  fimpara
fimpara

serve para ordenar o vetor colocando os números em ordem crescente ,   e para saber se é par ou ímpar você usa o operador lógico mod ,  

se vetor_80_1[p] mod 2 = 0 ENTÃO    //numero é par ?
   ok := falso
senao

então se o resultado for zero é por que o número  é par e se for qualquer outro número então é por que é ímpar .

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

×