Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, estou tendo problemas em como iniciar a diferença alguém poderia me ajudar ?

 

Questão 1

 

Carregar dez números lidos em um vetor x. em seguida, carregar mais dez números lidos em um vetor y. criar um vetor u, que deverá ser  a união dos vetores x e y (todos os elementos de x e os elementos de y que não estejam  em x). criar também um vetor d, que deverá ser a diferença entre x e y (todos elementos de x que não existam em y.) ao final, mostrar o conteúdo, separadamente, dos quatro vetores.

 

algoritmo "alg3"
var
   vetx, vety, vetd :vetor[1..10] de inteiro
   vetu :vetor[1..20] de inteiro
   c : inteiro
inicio
   //vet x
   escreval (" *preenchenvetdo vetor x* ")
   para c de 1 ate 10 faca
      escreval (" informe o ",c,"º número: ")
      leia (vetx[c])
   fimpara
   limpatela
   //vet y
   escreval (" *preenchenvetdo vetor y* ")
   para c de 1 ate 10 faca
      escreval (" informe o ",c,"º número: ")
      leia (vety[c])
   fimpara
   limpatela
   //vet uniao
   para c de 1 ate 10 faca
      se vetx[c] <> vety[c] então
         vetu[c]:= vetx[c]
         vetu[c+10]:=vety[c]
      fimse
   fimpara
   //vet diferença
   escreval (" *informando vetor x * ")
   para c de 1 ate 10 faca
      escreva (vetx[c],",")
   fimpara
   escreval (" ")
   escreval (" *informando vetor y * ")
   para c de 1 ate 10 faca
      escreva (vety[c],",")
   fimpara
   escreval (" ")
   escreval (" *informando vetor u * ")
   para c de 1 ate 20 faca
      escreva (vetu[c],",")
   fimpara
fimalgoritmo

 

  • Curtir 2
Postado

    @MatheusArtilino   seu código esta bom, mas esse loop que coloca os números no vetu não está funcionando certo não, por que ele está deixando passar alguns números iguais nos dois vetores .

aqui o código  desse loop :

para c de 1 ate 10 faca
    g:=0          //flag para ver se numero igual no outro vetor
    para i de 1 ate 10 faca
      se vetx[c]=vety[i] ENTÃO
        g:=1     // numero é igual
      fimse
    fimpara
    se g=0 ENTÃO          // numero não é igual
      vetu[c]:=vetx[c]    //coloca no vetU
      vetu[c+10]:=vety[c] //coloca no vetU
    fimse
    se (vetx[c]=0)ou(vety[c]=0) ENTÃO
      h:=1   //flag para ver se tem numero zero no vetx ou vety
    fimse
  fimpara

vai precisar dessas variáveis  do tipo inteiro  i , g , h

lá no final na hora de imprimir o vetu coloque essas linhas :

escreval(" *informando vetor u * ")
  para c de 1 ate 20 faca
    se vetu[c]<>0 ENTÃO
      escreva(vetu[c],",")
    fimse
  fimpara
  se h=1 ENTÃO   // se havia um numero zero no vetx ou vety
    escreva("0") //escreve o numero zero
  fimse

 

  • Curtir 1
Postado
13 horas atrás, devair1010 disse:

    @MatheusArtilino   seu código esta bom, mas esse loop que coloca os números no vetu não está funcionando certo não, por que ele está deixando passar alguns números iguais nos dois vetores .

aqui o código  desse loop :


para c de 1 ate 10 faca
    g:=0          //flag para ver se numero igual no outro vetor
    para i de 1 ate 10 faca
      se vetx[c]=vety[i] ENTÃO
        g:=1     // numero é igual
      fimse
    fimpara
    se g=0 ENTÃO          // numero não é igual
      vetu[c]:=vetx[c]    //coloca no vetU
      vetu[c+10]:=vety[c] //coloca no vetU
    fimse
    se (vetx[c]=0)ou(vety[c]=0) ENTÃO
      h:=1   //flag para ver se tem numero zero no vetx ou vety
    fimse
  fimpara

vai precisar dessas variáveis  do tipo inteiro  i , g , h

lá no final na hora de imprimir o vetu coloque essas linhas :


escreval(" *informando vetor u * ")
  para c de 1 ate 20 faca
    se vetu[c]<>0 ENTÃO
      escreva(vetu[c],",")
    fimse
  fimpara
  se h=1 ENTÃO   // se havia um numero zero no vetx ou vety
    escreva("0") //escreve o numero zero
  fimse

 

@devair1010 Obrigado por responder, fiz as alterações que você mencionou, mas notei que em casos que há repetição de números em um vetor (exemplo: VETX[C=1] = 24 , VETX[C=2] = 24) esses números não entram no vetor de união.

erro1.png

adicionado 1 minuto depois
algoritmo "alg3"
var
   vetx, vety, vetd :vetor[1..10] de inteiro
   vetu :vetor[1..20] de inteiro
   c, i, g, h : inteiro
inicio
   //vet x
   escreval (" *preenchenvetdo vetor x* ")
   para c de 1 ate 10 faca
      escreval (" informe o ",c,"º número: ")
      leia (vetx[c])
   fimpara
   limpatela
   //vet y
   escreval (" *preenchenvetdo vetor y* ")
   para c de 1 ate 10 faca
      escreval (" informe o ",c,"º número: ")
      leia (vety[c])
   fimpara
   limpatela
   //vet uniao
   para c de 1 ate 10 faca
      g:=0          // verifica se há numero igual no outro vetor
      para i de 1 ate 10 faca
         se vetx[c]=vety[i] então
            g:=1     // numero é igual
         fimse
      fimpara
      se g=0 então          // verifica se o número não é igual
         vetu[c]:=vetx[c]    // coloca no vetu
         vetu[c+10]:=vety[c] // coloca no vetu
      fimse
      se (vetx[c]=0)ou(vety[c]=0) então
         h:=1   // verifica se  tem numero zero no vetx ou vety
      fimse
   fimpara
   //vet diferença
   escreval (" *informando vetor x * ")
   para c de 1 ate 10 faca
      escreva (vetx[c],",")
   fimpara
   escreval (" ")
   escreval (" *informando vetor y * ")
   para c de 1 ate 10 faca
      escreva (vety[c],",")
   fimpara
   escreval (" ")
   escreval (" *informando vetor u * ")
   para c de 1 ate 20 faca
      se vetu[c]0 então
         escreva(vetu[c],",")
      fimse
   fimpara
   se h=1 então   // se houver um numero zero no vetx ou vety
      escreval("0") // escreve o número 0
   fimse
fimalgoritmo

esqueci de enviar o código depois da alteração.

  • Curtir 1
  • Membro VIP
Postado

Olá @MatheusArtilino. Você precisa seguir o enunciado.

 

19 horas atrás, MatheusArtilino disse:

[...] união dos vetores x e y (todos os elementos de x e os elementos de y que não estejam  em x). [...]

Ou seja, primeiro você adiciona os elementos de X, não importa se tem número repetido ou não... depois verifica se cada elemento de Y não está em X, caso não, adiciona! 

 

 

19 horas atrás, MatheusArtilino disse:

[...] diferença entre x e y (todos elementos de x que não existam em y.) ao final, mostrar o conteúdo, separadamente, dos quatro vetores.

 

Verifica se cada elemento de X está em Y, caso não, adiciona.

 

Observação: a criação do 4 vetor é baseado NOS MESMO DADOS PARA CRIAR O 3. Só muda a regra. Não deve ler X e Y novamente. É assim:

 

- Ler vetor X;

- Ler vetor Y;

- Cria vetor "união" baseado nos dados de X e Y

- Cria vetor "diferença" baseado nos dados de X e Y.

 

No aguardo.

  • Curtir 2
  • Membro VIP
Postado

Tem lá no comentário:

 

34 minutos atrás, Simon Viegas disse:

Ou seja, primeiro você adiciona os elementos de X, não importa se tem número repetido ou não... depois verifica se cada elemento de Y não está em X, caso não, adiciona! 

 

Seja específico... em qual parte do vetor união está com dúvidas? veja que são várias etapas.

  • Curtir 1
  • Membro VIP
Postado
23 minutos atrás, MatheusArtilino disse:

@Simon Viegas A etapa de verificação de cada elemento de Y que não está em X.

Você já faz isso, a diferença é que você apenas vai adicionar o valor em vetY em vetU. No seu código, você está adicionando vetY e vetX em vetU. Tente entender o seu próprio código primeiro. Essa técnica de usar C+10 até que é interessante, mas o objetivo do exercício é criar um vetor correto, e não apenas exibir a resposta correta! São coisas diferentes. Essa parte do "vetu[c]<>0" está conceitualmente falha... O vetor em si deve está correto, e não a exibição na tela.

 

Tente reformular o código:

Essa verificação se já existe ou não você já sabe fazer, o que não está dando certo é o que você está fazendo quando isso ocorre.. você está adicionando tanto X, quanto Y, e usando a posição "c" como base... mas deveria fazer:

 

1 hora atrás, Simon Viegas disse:

primeiro você adiciona os elementos de X

Depois

46 minutos atrás, Simon Viegas disse:

verifica se cada elemento de Y não está em X, caso não, adiciona! 

O vetor U vai adicionando em sequência..

 

  • Curtir 1
Visitante
Este tópico está impedido de receber 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!