receiving user values other than repeated numbers

Asked

Viewed 28 times

-2

Good morning!

I’m a beginner in algorithm and I’m making an algorithm that receives from the user an array of 20 integer positions with values between 1 and 20, but there can be no repeated number and no less than 1 to more than 20. My question is how to make these conditions run.. who can help me thank you very much.below follows what I did

Algorithm "without name"

Var

valores: vetor[1..20] de inteiro
i,num: inteiro

Inicio

para i de 1 ate 20faca

 escreva("informe um valor:")
 leia(num)
 valores[i] <- num
fimpara


escreval("================================== ")
para i de 1 ate 20 faca
   escreva(" ")
   escreva("o elementos do vetor são:",valores[i])
   escreval(" ")
   escreval(" ")
fimpara
Fimalgoritmo

1 answer

0

You will need to use "if" and an auxiliary vector. Simply use a Boolean vector of 20 positions, so that its i-th value indicates whether the number i has been read or not.

var 
valores: vetor[1..20] de inteiro
numeroJaFoiUsado: vetor[1..20] de booleano
i, num: inteiro

Inicio

para i de 1 ate 20 faca:
    numeroJaFoiUsado[i] = false
fimpara

para i de 1 ate 20 faca:
    escreva("Informe um valor: ")
    leia(num)
    
    // Não queremos usar o número se ele está fora dos limites.
    se numero < 1 ou numero > 20
        continue
    fimse 

    // Não queremos usar esse número se ele já foi usado.
    se numeroJaFoiUsado[num]:
        continue
    fimse

    // Se a execução chegou até aqui, é pq o número está ok.
    valores[i] = num

    // Lembre de marcar como usado, pra não usá-lo novamente!
    numeroJaFoiUsado[num] = true
fimpara

Remarks:

  • numeroJaFoiUsado[num] is the same thing as making numeroJaFoiUsado[num] == true, only more concise.
  • continue skip to the next loop execution to, i.e.: back to the start of the run flow from the to, only in the next iteration. Its use is not mandatory, but a matter of personal taste. You could get the same behavior using only if/if not, just using different conditions.
  • Note that if the user enters the numbers erroneously, some vector positions will not be filled.

Browser other questions tagged

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