
		ron_lima
		
		(usa Slackware)
		
		Enviado em 21/03/2009 - 22:16h 
		Lendo este tópico e outro que você deixou aqui no fórum, percebi que seu problema é algoritmo, e não linguagem C. Seria muito cômodo para você se eu colocasse aqui a implementação do código, o que não lhe acrescentaria absolutamente nada em termos de conhecimento. Portanto, prefiro um "approach" um pouco diferente.
O que você precisa fazer é implementar a operação de igualdade entre dois conjuntos. Antes de partir para a implementação do seu código, sugiro os seguintes passos:
1. Entenda completamente o problema que lhe foi proposto.
2. Uma vez entendido, modele a solução do problema e exercite-a para verificar se ela é suficientemente genérica para resolver completamente o problema.
3. Implemente o seu modelo.
Voltando ao seu problema: dados dois conjuntos A e B, como é que se verifica a igualdade de ambos? Seja o exemplo:
A = { a1, a2, a3, ..., an}
B = { b1, b2, b3, ..., bn}
A e B serão iguais se, e somente se, a1 = b1, a2 = b2, ..., an = bn. Porém, pela definição matemática, um conjunto é definido como uma coleção desordenada de elementos. Portanto, você precisa encontrar a correspondência entre cada elemento do conjunto A no conjunto B. 
É interessante verificar que:
Se A = B, então A está contido em B e B está contido em A. A consequência desse pensamento é que todos os elementos de A pertencem a B, visto que A está contido em B. Portanto, uma solução computacional possível e completa seria verificar se cada elemento de A está contido em B.
Desta forma, a maneira mais completa de resolver este problema é percorrer o conjunto A verificando se cada elemento de A está contido também em B. Isso significa fazer uma busca no conjunto B para cada elemento de A. A forma mais trivial de realizar uma busca é através do algoritmo linear, ou seja, avaliar elemento por elemento de B, comparando-o com A. Tendo em mente que um conjunto pode estar desordenado, a busca binária não seria útil, a não ser que fosse uma premissa que seus conjuntos tivessem de estar ordenados por algum critério. 
Partindo-se da suposição de que seus conjuntos estão desordenados, eu escreveria algo assim:
Algoritmo
  Declare
    A[10]: numérico;
    B[10]: numérico;
    i: numérico;
    j: numérico;
    quantos: numérico;
  quantos <- 0;
  Para i <-0 até 9 Faça
    Para j <- 0 até 9 Faça
      Se A[i] = B[j] Então
        quantos <- quantos + 1;
        pare;
      Fim-se;
    Fim-para;
  Fim-para;
  Se quantos <> 10 Então
    Escreva "São diferentes";
  Senão
    Escreva "São iguais";
  Fim-se.
Fim-algoritmo.
Este algoritmo bem simples percorre A em busca de itens que tenham correspondência em B. Aqui considerei que ambos os conjuntos têm o mesmo tamanho (10). Rigorosamente, o algoritmo deveria primeiro testar a quantidade de itens em cada conjunto e só depois avaliar os itens. A avaliação dos itens é feita indiretamente: para cada correspondência encontrada, um contador é incrementado. Os conjuntos serão iguais se o contador for igual à quantidade de elementos de um dos conjuntos, lembrando que é condição sine qua non que a quantidade de elementos de ambos os conjuntos seja igual para que a avaliação de cada item seja necessária.
Alguns poderão criticar esse algoritmo pela sua eficiência O(n2). Porém, o problema proposto não identificou qual a eficiência requerida e isso faz com que a solução mais simples seja mais do que adequada.
Transformar esse algoritmo em C é trivial e um trabalho direto. Sugiro que você gaste um tempo lendo o livro "A Linguagem C" de Brian Kernighan e Dennis Ritchie, a melhor obra sobre o assunto. 
Espero haver lançado alguma luz no seu caminho.