Ir ao conteúdo
  • Cadastre-se
Leonardo pinheiro

VisualG Verificar números primos em um vetor

Posts recomendados

Olá boa noite galera estou com problemas pra terminar este código espero que consiga seguir a minha linha de raciocínio.

 

a) Crie um vetor que seja de 10 posições. Preencha o vetor com valores inteiros. Percorra o vetor e diga se o valor de cada posição é um

algoritmo "número primo"
var
   vet: vetor[1..10] de inteiro
   c, i , n, p: inteiro

inicio
   para n de 1 ate 10 faca
      escreval("Digite os valores: ")
      leia(vet[n])
   fimpara
fimprocedimento

para c de 1 ate n faca
   p<-0
   para i de 1 ate c faca
      se (c mod i=0) entao
         p<-p+1
      fimse
   fimpara
   se (p=2)entao
      escreva(vet[n])
   fimse
fimpara
fimpara
fimalgoritmo

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Leonardo pinheiro, o segredo é sempre inserir coisas novas de modo completo, ou seja: o código sempre tem que está rodável!!! Exemplo:

algoritmo "número primo"
var
   vet: vetor[1..10] de inteiro
   c, i , n, p: inteiro

inicio


fimAlgoritmo

Se botar para rodar, vai rodar... não vai fazer algo, mas vai rodar sem erros.

 

Aí vai inserindo algo novo, mas sempre deixando rodável, exemplo:

algoritmo "número primo"
var
   vet: vetor[1..10] de inteiro
   c, i , n, p: inteiro

inicio
   //para n de 1 ate 10 faca
   para n de 1 ate 3 faca
      escreval("Digite os valores: ")
      leia(vet[n])
   finPara


fimAlgoritmo

Vai dar erro no finPara, só mudar para fimPara. O próprio compilador vai deixar claro, mas se não deixasse, eu teria uma boa base que o erro está no algo novo que acabei de inserir, já que antes estava rodando... Não adianta fazer tudo de uma vez!!!

 

Por aí vai... ao testar, por exemplo, esse código acima, já daria para ver se está lendo o vetor corretamente na "Áreas das variáveis de memória". Exemplo:

image.png

 

 

 

OUTRAS DICAS:

- Use nomenclaturas de variáveis mais sugestíveis;

- Sempre mantenha seu código identando. No VisualG, ao pressionar Ctrl+G ele já dar uma ajuda!!!

 

Segue um esboço:

//a) Crie um vetor que seja de 10 posições. Preencha o vetor com valores
//inteiros. Percorra o vetor e diga se o valor de cada posição é um

algoritmo "Números primos de um vetor"
var
   vetNumeros: vetor[1..10] de inteiro
   n, i: inteiro
   qtdDivisores: inteiro
   divisor: inteiro

inicio
   //para n de 1 ate 10 faca
   para n de 1 ate 3 faca
      escreval("Digite os valores: ")
      leia(vetNumeros[n])
   fimPara

   para i de 1 ate n faca
      qtdDivisores <- 0

      //Aqui implementar parte que conta quantos divisores tem cada número atual

      se (qtdDivisores = 2) entao
         escreva(vetNumeros[i])
      fimSe
   fimPara

fimAlgoritmo

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Leonardo pinheiro     seu código não está funcionando certo ,  pois você usou a variável de controle do loop c  para fazer as comparações , mas  deveria usar o valor armazenado no vetor ,  e o enunciado diz para informar se cada número do vetor é primo , então escrever todos , e se for primo escreva que é primo , ou se não for primo também escreva , mas dizendo que não é primo , outras coisas como o fimprocedimento não tem necessidade nesse código do jeito que está , além de que para usa- lo  precisa usar antes dele o procedimento , que precisa estar colocado lá antes do início inicial ,

procedimento qualquer_coisa
inicio
var
  x,y : inteiro
  x <- randi(100) + 1
  escreval("o valor do rand é ",x)
fimprocedimento       

e também ficou sobrando um fimpara , e seu código com algumas modificações  poderia ser assim  :

Algoritmo "numeros primos no vetor"
var
  vet     : vetor[1..10] de inteiro
  c,i,n,p : inteiro
inicio
  para n de 1 ate 10 faca
    escreva("Digite os valores: ")
    leia(vet[n])
  fimpara
  para c de 1 ate n faca        // vai percorrer todos os números do vetor
    p <- 0                      // inicializa o contador em zero
    para i de 1 ate vet[c] faca // vai de 1 até o valor do número que está no vetor
      se vet[c] mod i = 0 entao // o i vai de 1 até o valor no vetor
        p <- p + 1              // incrementa o contador
      fimse
    fimpara
    se p = 2 entao              // se teve apenas dois divisores
      escreval(vet[c]:3," - é um número Primo !")// escreve na tela que é primo
    senao
      escreval(vet[c]:3," - Não é um número Primo !")// escreve na tela que ele não é primo
    fimse
  fimpara
Fimalgoritmo

 

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

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!