Ir ao conteúdo
  • Cadastre-se

Acrescentar/Retirar numero de um vetor existente


Posts recomendados

Boa tarde galera.

Seguinte, estou estudando a logica de programação e fazendo uma serie de exercicios.

No fim dessa serie apareceu um exercicio que nao estou conseguindo fazer...  É sobre retirar um numero de um vetor.

 

Segue o exercicio:

  1. Faça um algoritmo para ler um vetor de 10 números. Após isto, deverá ser lido mais um número qualquer e verificar se esse número existe no vetor ou não. Se existir, o algoritmo deve gerar um novo vetor sem esse número. (Considere que não haverão números repetidos no vetor).

 

 

Dito isso, cheguei ate esse ponto do codigo (mas nao consigo eliminar (apagar da exibição da tela) o numero de indice correspondente)

Se alguem puder ajudar agradeço. (estou estudando pelo Visualg)

 

 

 

algoritmo "semnome"varv: vetor [1..10] de inteiroi, n: inteiroiniciopara i de 1 ate 10 facaleia (v[i])fimparaescreva ("Digite um numero para ser excluido do vetor: ")leia (n)escreval()para i de 1 ate 10 faca    se n = v[i] então        i <- i-1     //aqui eu tento excluir o numero de indice, mas claro q esta errado porque o codigo nao ta rodando certo    fimsefimparapara i de 1 ate 10 faca    escreva (v[i])fimparafimalgoritmo
Link para o comentário
Compartilhar em outros sites


algoritmo "semnome"

var

v: vetor [1..10] de inteiro

v2: vetor[1..9] de inteiro //Segundo vetor que vai até 9, pois um numero sera excluido

i, n: inteiro

inicio

para i de 1 ate 10 faca

leia (v)

fimpara

escreva ("Digite um numero para ser excluido do vetor: ")

leia (n)

escreval()

para j de 1 ate 9 faca

    para i de 1 ate 10 faca

        se n != v então           //Aqui verifica quis são os diferentes do numero digitado

            v2[j] <- v     //Aqui você adiciona os numeros

        fimse

    fimpara

fimpara

para i de 1 ate 9 faca

    escreva (v2)

fimpara

fimalgoritmo

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Saudações magneel, acredito ter um erro na seguinte parte do código:

 

para j de 1 ate 9 faca
    para i de 1 ate 10 faca
        se n != v então           //Aqui verifica quis são os diferentes do numero digitado
            v2[j] <- v     //Aqui você adiciona os numeros
        fimse
    fimpara
fimpara

essa parte do código está fazendo na verdade com que o novo vetor receba em todos os índices, todos os números contidos no vetor antigo e por fim o que fica em cada posição do vetor novo é o ultimo numero do vetor antigo. Exemplo:

 

Se o vetor lido for: 1 2 3 4 5 6 7 8 9 10.

E o número a ser excluido seja 2.

 

A cada iteração do laço mais externo 'j', ocorrerão 10 iteraçãos do laço mais interno 'i'.

Fazendo com que v[j] receba todos os números diferentes de 2 do vetor lido, até terminar com v[j] recebendo sempre o último número deste vetor que no exemplo dado é o número 10.

 

Logo o programa terminaria com o vetor novo com o seguinte conteúdo: 10 10 10 10 10 10 10 10 10 .

 

Um loop apropriado para a situação seria o seguinte:

j <- 1 //lembrando de declarar j previamente na seção corretapara i de 1 ate 10 faca     se n <> v[i] então  //sinal de diferente em VisuAlg não é != e sim <>. Leiam o então sem o ~ não está entrando sem ele rs.        v2[j] <- v[i]        j <- j+1     fimsefimpara
Link para o comentário
Compartilhar em outros sites

 

Saudações magneel, acredito ter um erro na seguinte parte do código:

essa parte do código está fazendo na verdade com que o novo vetor receba em todos os índices, todos os números contidos no vetor antigo e por fim o que fica em cada posição do vetor novo é o ultimo numero do vetor antigo. Exemplo:

 

Se o vetor lido for: 1 2 3 4 5 6 7 8 9 10.

E o número a ser excluido seja 2.

 

A cada iteração do laço mais externo 'j', ocorrerão 10 iteraçãos do laço mais interno 'i'.

Fazendo com que v[j] receba todos os números diferentes de 2 do vetor lido, até terminar com v[j] recebendo sempre o último número deste vetor que no exemplo dado é o número 10.

 

Logo o programa terminaria com o vetor novo com o seguinte conteúdo: 10 10 10 10 10 10 10 10 10 .

 

Um loop apropriado para a situação seria o seguinte:

j <- 1 //lembrando de declarar j previamente na seção corretapara i de 1 ate 10 faca     se n <> v[i] então  //sinal de diferente em VisuAlg não é != e sim <>. Leiam o então sem o ~ não está entrando sem ele rs.        v2[j] <- v[i]        j <- j+1     fimsefimpara

Verdade... Obrigado por me corrigir, falha mimnha

Link para o comentário
Compartilhar em outros sites

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