Alana Pinto de Abreu 0 Posted May 23, 2019 Report Share Posted May 23, 2019 (edited) Oi, preciso criar um programa que leia 20 inteiros para o vetor A(1 4 19 8 15 3 2 17 12 11 5 6 20 14 7 9 10 13 16 18) e mova os elementos de A para um vetor B(vazio), inserindo-os em ordem decrescente. B=[] I = 0 J = 0 LA = len(A)-1 while(I<LA): if((A[I]%2)!=0): B.append(A[I]) while(B[J]>A[I]): J = J + 1 if(J<(len(B)-1)): for K in range((len(B)-2), J-I, -1): B[K+1]=B[K] B[J] = A[I] for K in range(I,(len(A)-1),1): A[K] = A[K+1] A.pop() LA = LA - 1 else: I = I + 1 print("O vetor A ficou:") print(A) print("O vetor B ficou:") print(B) O código acima foi passado pelo meu professor, no entanto, ao tentar rodar o mesmo, o vetor B fica faltando alguns números e está fora de ordem decrescente, o que aparece no vetor B: [3, 3, 1, 19, 13, 9, 7, 5, 5, 3]. Alguém pode me ajudar? Obrigada Edited May 23, 2019 by Alana Pinto de Abreu Link to post Share on other sites
thoga31 577 Posted May 24, 2019 Report Share Posted May 24, 2019 A primeira coisa que vi nesse código foi o facto de estar a filtrar só para números ímpares. O objectivo é só mesmo copiar a lista de A para B por ordem decrescente? De qualquer das formas, a forma mais intuitiva será ir calculando o elemento máximo e respectivo índice: A = # código que preencha a lista B = [] while (A != []): ind = 0 max = A[0] for i in range(0, len(A), 1): if (A[i] > max): max = A[i] ind = i B.append(max) A = A[:ind] + A[ind+1:] Cumprimentos. Knowledge is free! Link to post Share on other sites
Alana Pinto de Abreu 0 Posted May 24, 2019 Author Report Share Posted May 24, 2019 41 minutos atrás, thoga31 disse: A primeira coisa que vi nesse código foi o facto de estar a filtrar só para números ímpares. O objectivo é só mesmo copiar a lista de A para B por ordem decrescente? De qualquer das formas, a forma mais intuitiva será ir calculando o elemento máximo e respectivo índice: A = # código que preencha a lista B = [] while (A != []): ind = 0 max = A[0] for i in range(0, len(A), 1): if (A[i] > max): max = A[i] ind = i B.append(max) A = A[:ind] + A[ind+1:] Cumprimentos. O objetivo é copiar os números ímpares de A em B, em ordem descrescente, acabei esquecendo de dizer que eram só os ímpares, de qualquer forma, posso usar o seu código? Obrigada. Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now