Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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)"

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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)

Compartilhar este post


Link para o post
Compartilhar em outros 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))

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.