Ir ao conteúdo

Posts recomendados

Postado
Var
   // Seção de Declarações das variáveis

   vt1, vt2 : vetor [1..10] de inteiro
   i, nm: inteiro

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...

   para i de 1 ate 10 faca

      escreva ("Digite o " ,i, "° número: ")
      leia (vt1[i])
      vt2[i] := vt1[i]
      limpatela
   fimpara


   para i de 1 ate 10 faca
      para nm de 1 ate 10 faca

         se(vt1[i] = vt2[nm]) e (i<>nm) entao
            escreval ("O número",vt1[i], " se encontra na posição ",i, ".")

         fimse
      fimpara
   fimpara







Fimalgoritmo

 

quando executado mostra a parte do escreval mais do que uma vez, não sei como resolver

 

proposta: 

Leia um vetor de 10 posições e verifique se existem valores iguais, os escreva e suas posições. 

  • Membro VIP
Postado

@lucaszconner, seu código está muito bom... mas acho que talvez não esteja em direção ao que foi solicitado no enunciado.

 

Levanto um ponto que costumo comentar:

  • para resolver um problema, primeiro seria necessário entender o problema

De um geral, é ponto que gostaria de reforçar... fazer isso seroa comum... mais comum do que o desejado... acontece o tempo tooodo, principalmente no dia a dia.

 

 

Então, o que você entendeu do que é para ser feito? O que você está tentando fazer se encaixaria naquilo que você entendeu do que é para fazer? Aquilo que inicialmente entendeu se encaixa no que foi solicitado?. Entende onde quero chegar?

 

Quando você diz:

quando executado mostra a parte do escreval mais do que uma vez, não sei como resolver

 

Ok!, a sua dúvida estaria em algo como "por quê está repetindo?". Certo? Mas acho que antes você deveria focar em algo como: "o que deveria ser impresso nesse programa?".

 

Rodei o programa com valores aleatórios... 

image.png

 

O enunciado seria:

11 horas atrás, lucaszconner disse:

Leia um vetor de 10 posições e verifique se existem valores iguais, os escreva e suas posições. 

 

E agora perceba (com a voz do Procópio): o que significaria "O número 4 se encontra na posição  1" em relação a esse enunciado acima? Tipo: "tá, como assim o número 4 está na posição 1? Isso quer dizer o quê?

 

 

Não está tão claro esses resultados...

 

 

Pense assim: usando da abstração, esqueça o VisualG . Esqueça que existe linguagens de programação... imagine que alguém te desse uma lista de 10 números e perguntasse: "quais as posições dos números repetidos?". Pode tentar aí... conseguiremos encontrar os repetidos de boa... mas como seria um bom formato de reposta? É nisso que estou propondo para focar. A lógica para resolver vem depois de entender o problema e ter uma base de como quer a resposta...

 

 

Sobre o código... deixe eu tentar adiantar alguma coisa... vou tentar apenas simplificar o código atual. Beleza? (A lógica por trás será a mesma.)

 

 

Basicamente: se os 2 vetores tem os mesmo dados, você não precisaria de 2 vetores... use o mesmo:

 

algoritmo "Identificar valores iguais"
var
   vetNumeros: vetor [1..10] de inteiro
   i, j: inteiro

inicio
   para i de 1 ate 10 faca
      escreva ("Digite o ", i:1, "° número: ")
      leia(vetNumeros[i])
      limpaTela()
   fimPara

   para i de 1 ate 10 faca
      para j de 1 ate 10 faca
         se (vetNumeros[i] = vetNumeros[j]) e (i <> j) entao
            escreval("O número ", vetNumeros[i]:1, " se encontra na posição ", i:1, ".")
         fimse
      fimpara
   fimpara
fimAlgoritmo

 

Esse código acima é equivalente ao seu... apenas simplifiquei um pouco...

 

 

 

Para facilitar os testes, você não precisa ficar redigitando os dados toda hora... tem 2 formas boas de resolver isso:

  1. colocar para gerar números aleatórios; (Atribuindo valores diretamente ao vetor. A vantagem que já predetermina o resultado esperado, ajudando nos testes)
  2. deixar os dados já salvos no programa; (Uma maneira simples seria colocar os "leia()" entre o comando ALEATORIO.)

Para o segundo, exemplo:

 

algoritmo "Identificar valores iguais"
var
   vetNumeros: vetor [1..10] de inteiro
   i, j: inteiro

inicio
   ALEATORIO 1,30 //para gerar números aleatórios entre x e y
   para i de 1 ate 10 faca
      escreva ("Digite o ", i:2, "° número: ")
      leia(vetNumeros[i])
      //limpaTela()
   fimPara
   ALEATORIO off //desativa o "gerador automático"

   escreval("")
   para i de 1 ate 10 faca
      para j de 1 ate 10 faca
         se (vetNumeros[i] = vetNumeros[j]) e (i <> j) entao
            escreval("O número ", vetNumeros[i]:1, " se encontra na posição ", i:1, ".")
         fimse
      fimpara
   fimpara
fimAlgoritmo

 

Pronto! Daí... sugiro reler o enunciado e tirar as dúvidas de como deve ficar o programa... só após tente implementar aquilo que você entendeu e acha que deve ser o resultado.

 

Pense assim: o que deveria aparecer na tela? Imagine que não precisa de cálculo... apenas fosse desenhar a resposta final, como deveria aparecer na tela?

 

 

Daí, OU tira dúvidas de como deveria ficar nela, OU, se já conseguiu reformular, começa implementar. Apenas não tente fazer aquilo que ainda não entendeu por "completo".

 

No aguardo

 

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!