Ir ao conteúdo
  • Cadastre-se

Duvidas com vetores em Pascal


Crosover

Posts recomendados

Olá pessoal, estou com uma duvida em que não achei a solução...

trata-se dos vetores, estou com algumas dificuldades em aprender a manipular esses vetores de forma correta.

a primeira dúvida que tenho é o seguinte:

temos dois vetores X,Y com 10 inteiros cada

program vetor;
uses crt;
var X,Y:array[1..10] of integer;
i:integer;

então lemos os 10 valores inteiros de cada vetor..

for i:=1 to 10 do
readln(X[i]);
readln(Y[i]);

simples, porém a duvida é: como faço para analisar se os inteiros digitados no vetor não estão repetidos?

EX:

ler X[1]:= 2; ok

ler X[2]:= 3; ok

ler X[3]:= 4; ok

ler X[4]:= 4; false

ler X[4]:= 5; ok

nesse exemplo o valor de X[4] é comparado com x[1..3] para verificar se os valores são iguais (neste caso é x[4] é igual a x[3]), caso seja, reler este valor até ser diferente dos valores anteriores.. até x[10].

como verificar se X[1..10] não tem valores repetidos e, se caso tenha reler o valor?

Eu tentei, com meu humilde conhecimento fazer essa comparação....

for i:=1 to 10 do
repeat
readln(X[i]);
until X[i]<>X[1..i];

:confused:

..sem êxito: 'Operator '<>' is not Overloaded'

Alguem poderia me esclarecer a maneira correta?

Outra dúvida é, extraído os valores de X[1..10] e Y[1..10] , após feita a comparação dos valores de cada vetor, de modo que todos os valores sejam diferentes, como eu comparo os vetores X e Y, de modo a exibir somente os numeros diferentes entre eles?

X[1] = 1; = Y[1]=1;

X[2] = 2; = Y[2]=2;

X[3] = 3; <> Y[3]=4;

X[4] = 5; <> Y[4] = 3;

escreve: Y[3],X[4];

nesse caso exibe apenas os elementos Y[3] (pois o valor 4 não esta contido em nenhum elemento entre X[1..4]) e X[4] (pois o valor 5 não está contido em nenhum elemento entre Y[1..4])

Bom, essas são minhas dúvidas, espero que tenha sido claro na questão: carregar dois vetores, X e Y, com dez números inteiros cada um. Considerar que os números de cada vetor digitado, X e Y, não podem estar repetidos, depois calcular a diferença entre X e Y (todos os elementos de X que não existam em Y).

Desde já obrigado e espero que possam me ajudar nessa ! ;)

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá,

Crosover, vamos lá..

1) Uso do begin/end

for i:=1 to 10 do
readln(X[i]);
readln(Y[i]);

Veja, neste caso, somente a primeira linha fará parte do for.

Faltou inserir o begin/end

for i:=1 to 10 do
begin
readln(X[i]);
readln(Y[i]);
end;

2) Valores não repetidos

Pelo que eu entendi, essas verificações de números repetidos devem ser feitas logo na leitura mesmo... Uma técnica interessante é você utilizar um "flag" para determinar, após uma pesquisa, se o número é repetido ou não. Algo mais ou menos assim:

var
repetido :booleano;
.
.
.
for i:=1 to 10 do
begin
repeat
readln(X[i]);
repetido:=false; {inicializa a variável para pesquisa}
{

Aqui uma lógica que compare o valor atual (<x[i]>) com todos os valores já lidos
(de 1 até i-1). Caso o valor atual seja igual a algum, você atribui a
<repetido> o valor de "true". Assim, caso nenhum número seja repetido, <repetido>
continuará sendo "false" (já que não foi alterado). A meneira mais prática é
usando um "for"... resumido: para cada número a ser comparado, se o valor é igual,
então repetido passar ser igual a "true"...

}

until not repetido; //[1]

[1] {"until not repetido;" tem o mesmo efeito que "until repetido=false;".
Explicando: o "until" necessita de um valor booleano ("true" ou "false" - se "true"
interrompe o laço), como "repetido" por si só já é um booleano, basta o valor da
variável. Neste exemplo, queremos que seja não repetido, logo, "repetido" tem que
ser igual a "false", e como havia dito, "until" precisa receber um "true"' para
interromper o "repeat", ou seja, o inverso... logo usa "not" para negar (inverter)}

Espero que entenda....

Tente ai, qualquer coisa posta aqui...

Abraços

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!