Ir ao conteúdo

Unir vetores em VisuAlg


llopesSP

Posts recomendados

Postado

Bom pessoal é o seguinte estou tentando resolver o seguinte algorítimo: Escreva um algoritmo que leia aleatoriamente valores inteiro para dois vetores x e y de 10 elementos cada, Crie, a seguir um vetor de z que seja a união de x com y. Escreva o vetor Z criado.Então quando estou tentando substituir com um contador para de 20 ele substitui somente o ultimo valor do índice para todo contador e quando coloco um contador de 10 ele substitui somente os 10 primeiros números vejam aí o que eu estou desenvolvendo, pessoal meu professor aqui da facul é meio ruim então ele num explica muito direito isso fico meio vago a ideia de vetor. Ta aí o ex agradeço a atenção desde já.


var
x,y:vetor[1..10] de inteiro
z:vetor [1..20] de inteiro
c,c2:inteiro
inicio
// Seção de Comandos
para c de 1 ate 10 faca
Escreva ("digite o numero:")
leia (x[c])
fimpara
para c de 1 ate 10 faca
escreva ("digite o numero:")
leia (y[c])
fimpara
para c de 1 ate 10 faca
se x[c] <> y[c] então
z[c] <- x[c]
z[c] <- y[c]
senao
z[c] <- x[c]
fimse
fimpara
para c de 1 ate 20 faca
escreval (z[c])
fimpara
fimalgoritmo

  • Membro VIP
Postado

Olá palmito.

Escreva um algoritmo que leia aleatoriamente valores inteiro para dois vetores x e y de 10 elementos cada, Crie, a seguir um vetor de z que seja a união de x com y. Escreva o vetor Z criado.

para c de 1 ate 10 faca
se x[c] <> y[c] então
z[c] <- x[c]
z[c] <- y[c]
senao
z[c] <- x[c]
fimse
fimpara
para c de 1 ate 20 faca
escreval (z[c])
fimpara
fimalgoritmo

Pelo que eu entendi o vetor "z" será simplesmente a união de "x" e "y". Não está especificado como será essa união, então, você poderia por exemplo, inserir os dados de "x" e após inseri os dados de "y". Logo, nesse exemplo, "z" terá o tamanho de "x" mais o tamanho de "y".

PS: Na sua postagem, não tem nenhuma referência a "condições de união", logo não precisaria de nenhum "se". Simplesmente os adicionaria em "z".

PS2: As coordenada do vetor "z" deveram ser independentes das coordenadas dos vetores "x" e "y". Uma boa forma seria usar um contador para "z" e iria aumentando de um em um a medida que seria inserido um novo valor. Veja, por ex.:

      z[c] <- x[c]
z[c] <- y[c]

Vamos supor que "c" vale "2", então você estaria inserindo um valor que está em "x" na posição "2" em "Z" na posição "2", logo após está inserindo o valor de "y' na posição '2" na mesma posição em "z" (2). Logo, "z[2]" vai ficar com o último valor inserido e o valor anterior será perdido.

No aguardo.

Abraços

Postado

então Simon o exercício não pede isso mais, quero fazer dessa forma para testar uma teoria minha aqui, se fosse para sobrepor os 20 índices eu já saberia, agora quero fazer do jeito que quando forem números iguais somente seja colocado uma vez no vetor Z

pessoal achei a solução para o algoritmo eu estava esquecendo da posição do índice do vetor Z e atribuindo valor do vetor X e Y no mesmo índice do vetor Z a solução ficou assim:

var x,y:vetor[1..10] de inteiro
z:vetor [1..20] de inteiro
c,c2:inteiro
inicio
// Seção de Comandos
para c de 1 ate 10 faca
Escreva ("digite o numero:")
leia (x[c])
fimpara
para c de 1 ate 10 faca
escreva ("digite o numero:")
leia (y[c])
fimpara
para c de 1 ate 10 faca
se x[c] <> y[c] então
z[c] <- x[c]
z[c+10] <- y[c] senao
z[c] <- x[c]
fimse
fimpara
para c de 1 ate 20 faca
escreval (z[c])
fimpara
fimalgoritmo

  • Membro VIP
Postado

Olá palmito.

1) Versão personalizada

então Simon o exercício não pede isso mais, quero fazer dessa forma para testar uma teoria minha aqui, se fosse para sobrepor os 20 índices eu já saberia, agora quero fazer do jeito que quando forem números iguais somente seja colocado uma vez no vetor Z

Entendi... é que na sua postagem você não comentou essa questão. ^_^

2) Solução encontrada

pessoal achei a solução para o algoritmo eu estava esquecendo da posição do índice do vetor Z e atribuindo valor do vetor X e Y no mesmo índice do vetor Z a solução ficou assim:

Justamente, como comentei... :lol:

PS2: As coordenada do vetor "z" deveram deverão ser independentes das coordenadas dos vetores "x" e "y". Uma boa forma seria usar um contador para "z" e iria aumentando de um em um a medida que seria inserido um novo valor. Veja, por ex.:

      z[c] <- x[c]
z[c] <- y[c]

Vamos supor que "c" vale "2", então você estaria inserindo um valor que está em "x" na posição "2" em "Z" na posição "2", logo após está inserindo o valor de "y' na posição '2" na mesma posição em "z" (2). Logo, "z[2]" vai ficar com o último valor inserido e o valor anterior será perdido.

3) Código "final"

var x,y:vetor[1..10] de inteiro
z:vetor [1..20] de inteiro
c,c2:inteiro
inicio
// Seção de Comandos
para c de 1 ate 10 faca
Escreva ("digite o numero:")
leia (x[c])
fimpara
para c de 1 ate 10 faca
escreva ("digite o numero:")
leia (y[c])
fimpara
para c de 1 ate 10 faca
[COLOR="Blue"]se x[c] <> y[c] então [/COLOR]
z[c] <- x[c]
z[c+10] <- y[c] senao
z[c] <- x[c]
fimse
fimpara
para c de 1 ate 20 faca
escreval (z[c])
fimpara
fimalgoritmo

Mas seu código ainda não está certo como você deseja (em vermelho). Neste código, você só está comparando "posições relativas entre 'X' e 'Y'", ou seja, verificando se o valor em "X" em determinada posição é igual a o valor em "Y" na mesma posição. Em fim, está aceitando valores repetidos... -_-

Precisa pensar um lógica diferente.

***

No aguardo.

Abraços.

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!