Jump to content
JPG

Conjuntos em Pascal

Recommended Posts

JPG

Desenvolva uma função em Pascal que receba como entrada dois conjuntos de inteiros entre 1 e 50 e retorne uma classificação para esse par de conjuntos, considerando a semelhança entre eles.

A função deverá retornar:

1
caso os conjuntos sejam iguais,

2
caso um seja subconjunto próprio do outro e o número de elementos da diferença entre o maior e o menor conjuntos seja menor ou igual ao número de elementos do menor conjunto,

3
caso um seja subconjunto próprio do outro e o número de elementos da diferença entre o maior e o menor conjuntos seja maior do que o número de elementos do menor conjunto,

4
caso um não seja subconjunto do outro e a interseção entre eles não seja vazia, e

5
caso sejam conjuntos disjuntos.

Queria saber como faço para entrar com os números no conjunto devo criar um vetor que receba esses números?

Share this post


Link to post
Share on other sites
Ricardo Pereira

Eu acho que sim, guardando os intervalos e fazendo depois a verificação dos mesmos...

Share this post


Link to post
Share on other sites
nunopicado

Vai depender do teu nível de aprendizagem.

Em Pascal, há uma coisa chamada Sets (Conjuntos), que é uma das vantagens do Pascal sobre grande parte das outras linguagens que não sonham o que isso é.

Com os Sets, esse exercício faz todo o sentido, e há comandos em Pascal para manipular Sets que te resolvem essas questões.

No entanto, os Sets são algo mais avançado (não necessariamente mais difícil) e alguns professores deixam-nos lá para a frente, e muitos nem sequer os ensinam (até porque muitos nem sabem o que é).

Claro, é possível fazer uma simulação de Sets com Arrays (Vectores), mas quanto a mim, é mais trabalhoso e menos adequado.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Duas questões importantes que vão determinar a escolha entre Sets e Arrays:

1. O conjunto pode conter números repetidos, ou só conterá um "exemplar" de cada número?

Por exemplo, eu introduzo 1,3,3,4,4,6 - devo obter o conjunto [1,3,3,4,4,6] ou [1,3,4,6]?

2. Já te foram leccionado Sets? Ou seja...

type TConjunto = set of byte;
var Conj : TConjunto;
//...
Conj := [1,3,4,6];

Consoante as respostas...

2. Não dei Sets - tens de usar Arrays.

1. Sei usar Sets, mas tenho de ter todos os números, incluindo os repetidos - tens de usar Arrays.

Caso contrário, usa Sets.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
JPG

O programa deve receber como entrada uma sequencia de números do usuario, como eu receberia essa sequencia do usuario usando sets. OBS: Fui orirntado a usar sets.

Share this post


Link to post
Share on other sites
nunopicado

Fazias uma leitura (read ou readln) para uma variavel do mesmo tipo de dados usado pelo Set, e depois acresenctavas:

Type
  SByte=Set of Byte;
var
  Conjunto:SByte;
  vLeitura:Byte;
begin
  .
  .
  .
  readln(vLeitura);
  Conjunto:=Conjunto+[vLeitura]
  .
  .
  .
end.

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.