Ir ao conteúdo
  • Cadastre-se

Algoritmo difícil


Evandro UFRN

Posts recomendados

Olá pessoal!

no momento, estou pagando algoritmo ("portugol") na universidade, e o professor me propôs uma questão, cujo grau de dificuldade é enorme. Já tentei bastante mas num consigo de jeito nenhum, será que algum de vocês pode me dar alguma dica?

Enunciado da questão:

3. Leia dois conjuntos numéricos quaisquer (possivelmente com quantidades distintas de elementos), sendo que cada um deles não possui elementos repetidos e imprima a união entre eles (também sem elementos repetidos).

Link para o comentário
Compartilhar em outros sites

você pode fazer por meio de vetores. Cada vetor representando um conjunto. A quantidade de numeros no conjunto você determina na declaração destes vetores.

Por exemplo:

declarando vetores

conj1:vetor[1..10] de inteiro

conj2:vetorr[1..10] de inteiro

conjuniao:vetor[1..10] de inteiro

qualquer duvida posta ahi.

Link para o comentário
Compartilhar em outros sites

Pablo eu fiz isso... os dois conjuntos receberam elementos de forma distinta dai o problema é como fazer a uniao perceber se há um numero de um conjunto que pertença ao outro e assim não repeti-lo no conjunto... muito obrigado pela assistência, e se você souber como eu faço isso me avisa ^^" valeu grande!!!

Link para o comentário
Compartilhar em outros sites

Pablo... é o seguinte... no conj1 não pode haver elementos repetidos, e no conj2 tambem nao. Todavia, um elemento que esta em conj2 pode também estar no conj1. Mas, quando for calcular a uniao desses dois conjuntos verificando um conj com o outro, se houver um elemento repetido ele apenas escreverá um. entendeu?

exemplo:

Conj1: 1,5,9,45

Conj2: 5,46,98,1

Conj1UConj2(uniao dos dois): 1,5,9,45,46,98

Note que 1 e 5 so apareceram uma vez

se nao entendeu me avisa...

muito obrigado pablo...

Link para o comentário
Compartilhar em outros sites

Pablo eu consegui fazer ele todo porém ele não ta funcionando como eu queria...

executa ele ai e me diz qo que c acha tudo bem?na uniao ta saindo repetido e ja quebrei a cabeça muitao e por isso nem entrei esses dias valeu Fera pela ajuda!!

var
A:vetor[1..100] de real
C:vetor[1..100] de real
B:vetor[1..100] de real
n,i,j,cont,repetido,x,k :inteiro
inicio
repita
escreva("digite a quantidade de elementos para o conjunto A:")
leia(n)
ate(n<=100)
escreva("digite os",n," elementos")
para i de 1 ate n faca
se(i=1)então
leia(A[i])
senao
cont <- 1
Enquanto (cont=1) faca
leia(A[i])
para j de 1 ate i-1 faca
se(A[i]=A[j])então
repetido <- 1
fimse
fimpara
se(repetido=1)então
escreva("este número já existe, por favor, digite outro")
repetido<-0
senao
cont <- 0
fimse
fimenquanto
fimse
fimpara
para i de 1 ate n faca
escreva(A[i])
fimpara
para i de 1 ate n faca
C[i] <- A[i]
fimpara
repita
escreva("digite a quantidade de elementos para o conjunto B:")
leia(x)
ate(x<=100)
escreva("digite os",x," elementos")
para i de 1 ate x faca
se(i=1)então
leia(B[i])
senao
cont <- 1
Enquanto (cont=1) faca
leia(B[i])
para j de 1 ate i-1 faca
se(B[i]=B[j])então
repetido <- 1
fimse
fimpara
se(repetido=1)então
escreva("este número já existe, por favor, digite outro")
repetido<-0
senao
cont <- 0
fimse
fimenquanto
fimse
fimpara
para i de 1 ate x faca
escreva(B[i])
fimpara
se(x>=n)então
k <- 1
para i de 1 ate x faca
cont <- 0
Enquanto (cont=0) faca
se(C[k]=B[i])então
C[k] <- B[i]
cont <- 1
senao
k <- k+1
fimse
fimenquanto
fimpara
fimse
para i de 1 ate x faca
escreva(C[i])
fimpara
fimalgoritmo

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois...

:cool:

Pablo eu consegui fazer ele todo porém ele não ta funcionando como eu queria...

executa ele ai e me diz qo que c acha tudo bem?na uniao ta saindo repetido e ja quebrei a cabeça muitao e por isso nem entrei esses dias valeu Fera pela ajuda!!

var
A:vetor[1..100] de real
C:vetor[1..100] de real
B:vetor[1..100] de real
n,i,j,cont,repetido,x,k :inteiro
inicio
repita
escreva("digite a quantidade de elementos para o conjunto A:")
leia(n)
ate(n<=100)
escreva("digite os",n," elementos")
para i de 1 ate n faca
se(i=1)então
leia(A[i])
senao
cont <- 1
Enquanto (cont=1) faca
leia(A[i])
para j de 1 ate i-1 faca
se(A[i]=A[j])então
repetido <- 1
fimse
fimpara
se(repetido=1)então
escreva("este número já existe, por favor, digite outro")
repetido<-0
senao
cont <- 0
fimse
fimenquanto
fimse
fimpara
para i de 1 ate n faca
escreva(A[i])
fimpara
para i de 1 ate n faca
C[i] <- A[i]
fimpara
repita
escreva("digite a quantidade de elementos para o conjunto B:")
leia(x)
ate(x<=100)
escreva("digite os",x," elementos")
para i de 1 ate x faca
se(i=1)então
leia(B[i])
senao
cont <- 1
Enquanto (cont=1) faca
leia(B[i])
para j de 1 ate i-1 faca
se(B[i]=B[j])então
repetido <- 1
fimse
fimpara
se(repetido=1)então
escreva("este número já existe, por favor, digite outro")
repetido<-0
senao
cont <- 0
fimse
fimenquanto
fimse
fimpara
para i de 1 ate x faca
escreva(B[i])
fimpara
se(x>=n)então
k <- 1
para i de 1 ate x faca
cont <- 0
Enquanto (cont=0) faca
se(C[k]=B[i])então
C[k] <- B[i]
cont <- 1
senao
k <- k+1
fimse
fimenquanto
fimpara
fimse
para i de 1 ate x faca
escreva(C[i])
fimpara
fimalgoritmo

EU LI O SEU PROBLEMA E CONSEGUI RESOLVER O PROBLEMA DE UNIÃO DE TERMOS DE UMA FORMA ALTERNATIVA.

algoritmo "UNIAO"

var

x,y:vetor[1..10] de real

z,k:vetor[1..20] de real

i,j,cont,conti,m,n:inteiro

v:real

inicio

para i de 1 ate 10 faca

escreval(" type the ",i," number of first term")

leia(x)

limpatela

j<-j+1

z[j]<-x

fimpara

para i de 1 ate 10 faca

escreval(" type the ",i," number of second term")

leia(y)

limpatela

j<-j+1

z[j]<-y

fimpara

para i de 1 ate 19 faca

para j de i+1 ate 20 faca

se z>=z[j] então

v<-z

z<-z[j]

z[j]<-v

fimse

fimpara

fimpara

m<-1

para i de 1 ate 20 faca

para j de i+1 ate 20 faca

se z=z[j] então

cont<-1+cont

fimse

fimpara

se cont=0 então

n<-n+1

k[n]<-z

senao

m<-m+1

k[21-m]<-z

conti<-conti+1

fimse

cont<-0

fimpara

conti<-20-(conti)

para i de 1 ate conti faca

escreval(k)

fimpara

fimalgoritmo

EU ULTILIZEI O MÉTODO MIRROR (C=A+B) E O MÉTODO BUBBLE SORT NO QUAL REAGRUPA OS MEMBROS DE FORMA CRESCENTE.

DESTA FORMA, você POD DIGITAR QUANTOS NÚMEROS QUISER NÃO IMPONDO AO USUÁRIO RESTRIÇÕES QUE ATENUAM A CAPACIDADE DE SEU PROGRAMA.(PORÉM, QUANTO MENOS RESTRIÇÃO AO USUÁRIO, MAIS LENTO SERÁ A EXECUÇÃO DO SEU POGRAMA , POIS ELE ANALIZARÁ E PROCESSARÁ ESSAS RESTRIÇÕES.) AI O QUE MANDA É A REGRA DE NEGÓCIO VALEU?:cool:

QUALQUER DÚVIDA OU CRÍTICA CONSTRUTIVA AO MEU PROGRAMA É SÓ POSTAR. FLOU:cool:

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...