Modulo union, interseccion y diferencia de conjuntos

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using C = System.Console;

namespace Union_Inter_Diferencia
{
    class Program
    {

        static void LeerArreglo(int[] A, int n)
        {
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("leer elemento {0}", i + 1);
                A[i] = int.Parse(Console.ReadLine());
            }
        }
        static void EscribirArreglo(int[] A, int n)
        {

            for (int i = 0; i < n; i++)
            {
                Console.Write("{0},", A[i]);
            }
        }
        static bool existe(int[] A, int n, int elemento)
        {
            bool existeElemento;
            existeElemento = false;
            for (int i = 0; i < n; i++)
                if (elemento == A[i])
                    existeElemento = true;
            return existeElemento;

        }
        static void DUnion(int[] A, int nA, int[] B, int nB, ref int[] CUnion, ref int nUnion)
        {
            int[] union = new int[nA + nB];
            int n = 0;
            for (int i = 0; i < nA; i++)
            {
                union[i] = A[i];
                n++;
            }
            for (int i = 0; i < nB; i++)
            {
                if (!existe(A, nA, B[i]))
                {
                union[n] = B[i];
                n++;
                }
            }
            CUnion = union;
            nUnion = n;

        }
        static void DInterseccion(int[] A, int nA, int[] B, int nB, ref int[] CInterseccion, ref int nCInterseccion)
        {
            int[] inter = new int[50];
            int n = 0;
            //for (int i = 0; i < nA; i++)
            //{
            //    inter[i] = A[i];
            //    n++;
            //}
            for (int i = 0; i < nB; i++)
            {
                if (existe(A, nA, B[i]))
                {
                    inter[n] = B[i];
                    n++;
                }
            }
            CInterseccion = inter;
            nCInterseccion = n;
        }
        static void DDiferencia(int[] A, int nA, int[] B, int nB, ref int[] deferencia, ref int ndiferencia)
        {
            int[] Diferencia = new int[50];
            int n = 0;
            for (int i = 0; i < nA; i++)
            {
                if (!existe(B, nB, A[i]))
                {
                    Diferencia[n] = A[i];
                    n++;
                }
            }
            for (int i = 0; i < nB; i++)
            {
                if (!existe(A, nA, B[i]))
                {
                    Diferencia[n] = B[i];
                    n++;
                }
            }
            deferencia = Diferencia;
            ndiferencia = n;
        }
        static void Main(string[] args)
        {
            int[] Union = new int[50];
            int nUnion = 0;
            int[] Intersec = new int[50];
            int nIntesec = 0;
            int[] Dif = new int[50];
            int nDif = 0;
            int[] A = new int[50];
            int[] B = new int[50];
            int nA, nB;
            Console.Write(" numero de elementos del conjunto A :");
            nA = int.Parse(Console.ReadLine());
            Console.WriteLine("los elementos de A son : ");
            LeerArreglo(A, nA);
            Console.Write(" numero de elementos del conjunto B :");
            nB = int.Parse(Console.ReadLine());
            Console.WriteLine("los elementos de B son : ");
            LeerArreglo(B, nB);

            //determinando la union, interseccion y diferencia simetrica

            DUnion(A, nA, B, nB, ref Union, ref nUnion);
            DInterseccion(A, nA, B, nB, ref Intersec, ref nIntesec);
            DDiferencia(A, nA, B, nB, ref Dif, ref nDif);

            //escribir la union, interseccion y diferencia simetrica

            Console.Write("la union es ");
            EscribirArreglo(Union, nUnion);
            Console.WriteLine();

            Console.Write("la interseccion es ");
            EscribirArreglo(Intersec, nIntesec);
            Console.WriteLine();

            Console.Write("la diferencia simetrica es :");
            EscribirArreglo(Dif, nDif);

            Console.ReadLine();

        }
    }
}

Buscar en el sitio

© 2010 Todos los derechos reservados.