Jump to content
Juliana Mesquita

For, programa não conta um elemento (Problema na lógica)

Recommended Posts

Boa noite, estou com um problema que acredito que seja de logica em um determinado programa criado, ele não retorna o valor devido, abaixo está a questão e o código que criei, alguém poderia me ajudar a solucionar o que eu fiz de errado?? Eu acrescento dentro de uma lista determinados valores ele me retorna faltando um elemento sempre. :(

Questão - Faça um programa que preencha por leitura um vetor de 10 posições, e conta quantos valores diferentes existem no vetor.

soma_dife=0
repetido=False
vetor=[]
posicao=10
valor=0
valor_anterior=0
for i in range(posicao):
    vetor.append(int(input(' Digite elemento : ')))
for i in range(posicao):
    valor=vetor[i]
    for j in range(i):
        valor_anterior=vetor[j]
        if(valor==valor_anterior):
            repetido=True
    if(not repetido):
        soma_dife+=1
print(' No vetor = ',vetor,', Existem ',soma_dife,' valores diferentes.')

OBS: Exemplo de resultado errado eu acrescento no vetor os valores :1,3,9,6,7,3,2,1, criando o vetor[1,3,9,6,7,3,2,1] e o resultado de valores diferentes gerado e 5, porem na verdade deveria ser 6. :wacko:

A Forma que eu estou imprimindo na tela o valor 6 está errado pois estou acrescentando no print na variável diferente +1, foi a unica forma que achei para gerar o que eu queria... mas continua com erro de logica... alguém me ajuda?? :´( "print('A quantidade de valores diferentes dentro do vetor ',vetor,' valores diferentes = ',diferente+1)"

Share this post


Link to post
Share on other sites

Duas possibilidades:

- transforme a lista num set (que não admite valores duplicados) e imprima o tamanho

- crie um outro array vazio (visitados) e à medida que você percorre o primeiro array você verifica se o elemento foi inserido no array visitados. se não foi, incremente o contador e insira ele.

  • +1 1

Share this post


Link to post
Share on other sites

Obrigada pela ajuda, vou implementar da duas formas que você sugeriu para testar, mas percebi que minha variável repetição não voltada a ser Falso.... por isso estava dando erro no resultado, a solução foi por ele iniciando dentro do primeiro for como Falso. ;)

Vlws! Depois posto o método que você sugeriu para ver se você aprova.. Te mais Jovem! (y)


posi=10
vetor=[]
diferente=0

for i in range(posi):
    vetor.append(eval(input(' Digite elemento : ')))

for i in range(posi):
    repeticao=False
    valor=vetor[i]
    for j in range(i):
        if(valor==vetor[j]):
            repeticao=True
    if not repeticao:
        diferente+=1

print('A quantidade de valores diferentes dentro do vetor ',vetor,' valores diferentes = ',diferente)

Share this post


Link to post
Share on other sites
valores = []
for i in range(10):
    valores.append(int(input(' Digite elemento : ')))
    
conjunto = set(valores)
print("Existem {0} valor(es) diferente(s)\n".format(len(conjunto))

Share this post


Link to post
Share on other sites

Creio estar com o mesmo slide de exercícios que você, estou com dificuldades nessa questão, não entendi bem como funcionou a variável repeticao que você usou, e pq utilizar 3 for sendo dois com variável i e um com variável j. Poderia esclarecer o seu co

Share this post


Link to post
Share on other sites
array = list()
contador = 0
i = 0
repetido = False
for i in range(10):
    valor = int(input("Valor:"))
    array.append(valor)

for i in range(10):
    array.sort()
    if array[i-1] == array[i]:
        repetido = True
    else:
        contador +=1
print(contador)

Me baseei no seu algoritmo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.