How to print pairs and their positions in Visualg

Asked

Viewed 42 times

-1

Hello!

I have the following exercise: "Ask the user for 10 integer numbers. Learn which pairs and their positions in the vector."

Must use Visualg and vectors.

Have:

Algoritmo "10 números pares e as suas posições"

Var
   valor: vetor[1..10] de inteiro
   contador, contPar, par: inteiro


Inicio

      contador <- 1
      contPar <- 0

      enquanto contador <= 5 faca
               Escreva("Indique o número: ")
               leia(valor[contador])
               se valor[contador] % 2 = 0 entao
                  par <- valor[contador]
                  contPar <- contPar + 1

               fimse

               contador <- contador + 1          
     fimenquanto
     
escreval("O número ",par," é par e está na ",contPar,"ª posição.")
Fimalgoritmo

The algorithm prints:

Indique o número: 6
Indique o número: 2
Indique o número: 5
Indique o número: 3
Indique o número: 1
O número  2 é par e está na  2ª posição.

Recognize the pair, but only 1 of them. What can I do? Thank you

2 answers

0

I’ll try to summarize:

  • fill the vector;
  • for each vector position. If the number is even. Displays the number at its position.

About:

Recognize the pair, but only 1 of them. What can I do? Thank you

It is that you are trying to "save" the results... but you would need to assimilate that a variable only stores one value, that is: every new pair, you are updating the same variable, so it will only keep the last value assigned. Another point is that the position you look for is the position in the vector, but you’re kind of trying to count the number of pairs... are different things.

The position of the number would be in the variable contador same. Examples:

Sweeping the vector itself

algoritmo "10 números pares e as suas posições"
var
   numeros: vetor[1..10] de inteiro
   contador, contPar, par: inteiro
inicio
   contador <- 0
   contPar <- 0

   escreval("Informe 10 números inteiros")

   ALEATORIO 1, 100
   para contador de 1 ate 10 faca
      escreva (contador:2, "º número: ")
      leia(numeros[contador])
   fimPara
   ALEATORIO OFF

   escreval()
   escreval("Relação de números pares")
   escreval()
   escreval("Numero  -  Posição")
   escreval("------------------")
   para contador de 1 ate 10 faca
      se numeros[contador] % 2 = 0 entao
         escreval(numeros[contador]:4, contador:11)
      fimSe
   fimPara
fimAlgoritmo

inserir a descrição da imagem aqui

Storing the data in other vectors

algoritmo "10 números pares e as suas posições"
var
   numeros: vetor[1..10] de inteiro
   pares, posicoes: vetor[1..10] de inteiro
   contPares, i: inteiro
   contador, contPar, par: inteiro
inicio
   contador <- 0
   contPar <- 0

   escreval("Informe 10 números inteiros")

   ALEATORIO 1, 100
   para contador de 1 ate 10 faca
      escreva (contador:2, "º número: ")
      leia(numeros[contador])
   fimPara
   ALEATORIO OFF

   escreval()
   escreval("Relação de números pares")
   escreval()
   escreval("Numero  -  Posição")
   escreval("------------------")

   contPares <- 0
   para contador de 1 ate 10 faca
      se numeros[contador] % 2 = 0 entao //se for par
         contPares <- contPares + 1 //atualiza o contador de pares
         pares[contPares] <- numeros[contador] //armazena o par
         posicoes[contPares] <- contador //armazena a posição desse par
      fimSe
   fimPara

   para i de 1 ate contPares faca
      escreval(pares[i]:4, posicoes[i]:11)
   fimPara
fimAlgoritmo

Note: the result is exactly the same as the previous one, so I will not post another image.

  • Another interesting way would be using a record combining with a vector, thus, it would be possible to "group" the information of the value of the even number with its respective position in the initial vector.

0

Turns out at the end of your code, you just put in to print a line

escreval("O número ",par," é par e está na ",contPar,"ª posição.")

In this case, I suggest you make two edits in the code, create two vectors: one to store the even numbers and one vector to store the positions, so in the final loop you only need to go through the two vectors and will have all the even numbers and their respective positions.

  • Hi, Roland. Thanks for the help. I tried this: https://prnt.sc/10eeoff E gave this: https://prnt.sc/10eeovl Any hint?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.