Faça uma função em Pascal que receba dois conjuntos A e B como parâmetros de entrada e retorne
o valor 0 (zero) caso A seja igual a B. Caso sejam diferentes, a função deve retornar 1 caso A esteja
contido em B, o valor 2 caso B esteja contido em A ou o valor 3 caso nenhum dos casos anteriores
aconteça. A e B devem conter valores inteiros no intervalo [1,50].
Program questao4 (input,output);
Type A= set of 1..50; B= set of 1..50;
Var conj_a: A; conj_b: B; conj_func: integer;
Function Conjuntos (conj_a: A; conj_b: B): integer;
Begin
if conj_a = conj_b then begin Conjuntos:=0; {Testa se os conjuntos são iguais}
end
else begin
if conj_a <= conj_b then Conjuntos:=1 {Testa se A está contido em B}
else if conj_b <= conj_a then Conjuntos:=2 {Testa se B está contido em A}
else Conjuntos:=3
end
End;
Begin
conj_a:=[1,3,5]; {voce pode alterar os componentes do conjunto para testar o retorno}
conj_b:=[6,7];
conj_func := Conjuntos(conj_a, conj_b);
write(conj_func);
readln()
End.
Nesta resolução, foi usado a linguagem C, dada a fácil compreensão e baixa complexidade. Nele foi utilizado a função strncmp(), que verifica os caracteres em cada campo do vetor informado, por isso foram colocados os dois vetores em ret, para ficar melhor a verificação desses vetores, onde no primeiro caso retornará 0, se ambos forem iguais, no segundo 1 se forem diferentes e no terceiro vai imprimir o ret, pois o intervalo pedido ficou confuso, seria no intervalo de intersecção dos vetores? Um intervalo específico de campos? Por isso ficou apenas a impressão dele no terceiro caso.
#include <stdio.h>
int main ()
{
int A[5] = {0,0,0,0,0};
int B[5] = {0,0,0,0,0};
int ret, i; //string de retorno
printf ("Informe os valores de A: %d ");
scanf ("%d", &A);
printf ("Informe os valores de B: %d ");
scanf ("%d", &B);
ret = strncmp(A, B, 5);//coloco ambos vetores no retorno para comparação, a funcao strncmp compara os campos
for (i = 0, i <= 5, i++)
{
if (ret == ret)
return 0; // primeiro caso, caso seja iguais
else if (ret != 0) // segundo caso, diferentes
return 1;
else
return ("%d ", ret); // tericeiro caso, nenhum dos anteriores
}
}
Nesta resolução, foi usado a linguagem C, dada a fácil compreensão e baixa complexidade. Nele foi utilizado a função strncmp(), que verifica os caracteres em cada campo do vetor informado, por isso foram colocados os dois vetores em ret, para ficar melhor a verificação desses vetores, onde no primeiro caso retornará 0, se ambos forem iguais, no segundo 1 se forem diferentes e no terceiro vai imprimir o ret, pois o intervalo pedido ficou confuso, seria no intervalo de intersecção dos vetores? Um intervalo específico de campos? Por isso ficou apenas a impressão dele no terceiro caso.
#include <stdio.h>
int main ()
{
int A[5] = {0,0,0,0,0};
int B[5] = {0,0,0,0,0};
int ret, i; //string de retorno
printf ("Informe os valores de A: %d ");
scanf ("%d", &A);
printf ("Informe os valores de B: %d ");
scanf ("%d", &B);
ret = strncmp(A, B, 5);//coloco ambos vetores no retorno para comparação, a funcao strncmp compara os campos
for (i = 0, i <= 5, i++)
{
if (ret == ret)
return 0; // primeiro caso, caso seja iguais
else if (ret != 0) // segundo caso, diferentes
return 1;
else
return ("%d ", ret); // tericeiro caso, nenhum dos anteriores
}
}
Para escrever sua resposta aqui, entre ou crie uma conta
Fundamentos de Programação
•ESTÁCIO
Programação Orientada A Objetos
•IFCE
Algoritmo e Programação
•UEMG
Compartilhar