C sharp - ayuda con ejercicio

 
Vista:

ayuda con ejercicio

Publicado por loto3126 (3 intervenciones) el 26/09/2014 06:10:48
hola que tal estoy recién iniciando y quería saber si me podía ayudar con ese ejercicio, gracias

ejercicio:

A definicion asi A= { j, u, g, o, d, e}
B definicion asi B= { m, a, n, g, o}

La diferencia simétrica posible se representa asi ADB= { j, u, d, e, m, a, n}

escribir el pseudocodigo (si te animas a mandar un código aun mejor) para resolver la diferencia simétrica .


Por lo que entendí, tenes que tomar los elementos de ambos conjuntos, y quedarte solo con los que no esten repetidos, y pasarlos en un meteodo/ funcion.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Nacho

ayuda con ejercicio

Publicado por Nacho (5 intervenciones) el 26/09/2014 08:12:09
Existe un millón de maneras de hacerlo supongo, se me ocurrieron muchas al leer tu pregunta, así que te pondré tres, mi preferida es la ultima,, y seguramente sea la mas eficiente, las otras solo son por si no la entiendes del todo:

Manera Uno:

Suma los dos conjuntos:
A+B = { J, U, G, O, D, E, M, A, N, G, O }

Ahora recorre el nuevo conjunto buscando términos semejante
Si una letra se repite entonces eliminas todas las letras que sean iguales a esta

Así lo haces hasta que te quede un arreglo solo con las letras sin repetir.

Manera Dos:

Como esta, hay muchas maneras mas. Otra forma un poco mas intuitiva que eficiente seria la siguiente:

Crea un conjunto vacío lo llamaremos C, la función de este conjunto es guardar todas las letras repetidas.

Recorre el primer(A) conjunto, comparando cada letra con todas las letras del segundo conjunto(B)

Esto lo puedes hacer con dos ciclos (uno anidado dentro del otro) y un if que compare letra por letra.

Si encuentras una letra que sea igual a otra añádela al conjunto C.

Una vez hecho crea el conjunto ADB, el que guardara el resultado final.

Posterior a esto tendrás que recorrer el conjunto A y el conjunto B por separado, cada uno de estos comparando que ninguna letra se repita en el conjunto C, si no se repite añadirás la letra en el conjunto ADB.

Y fin.

Por otro lado la manera que mas me gusta seria la siguiente: (seria una forma similar pero mas simple que la primera.)

Manera Tres:

define tu conjunto A y tu conjunto B, sumalos. creando así el conjunto A+B.

luego crea el conjunto ADB, acá empieza la magia.

Tendrás que recorrer el conjunto A+B comparando con todo el interior del ADB, si la letra no se encuentra en el conjunto ADB entonces añádela.

y listo, así de simple.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nacho

ayuda con ejercicio

Publicado por Nacho (5 intervenciones) el 26/09/2014 08:32:41
Leyendo lo que puse, se me fue un poco la olla, con la manera tres.
de todas maneras tendrás que crear un arreglo con las letras repetidas, para luego eliminarlas del ADB, lo que te puse es un algoritmo para que solo salga una letra no para reducir los términos semejantes, lo lamento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con ejercicio

Publicado por loto3126 (3 intervenciones) el 26/09/2014 23:22:56
muchas gracias por tu ayuda, queria saber si me podias ayudar un poco con el codigo que ese era mi gran problema en si
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nacho

ayuda con ejercicio

Publicado por Nacho (5 intervenciones) el 27/09/2014 04:23:35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Conjunto A
            char[] a = new char[] { 'J', 'U', 'G', 'O', 'D', 'E' };
            // Conjunto B
            char[] b = new char[] { 'M', 'A', 'N', 'G', 'O' };
            // Conjunto Resultante
            ArrayList adb = new ArrayList();
 
            // si isRepeated es igual a false quiere decir que la letra no se encuentra en otro conjunto
            bool isRepeated;
 
            //Algoritmo para añadir las letras del conjunto A al conjunto Resultante, siempre y cuando la letra no se encuentre en el conjunto B
            for (int countA = 0; countA < a.Length; countA++)
            {
                isRepeated = false;
                for (int countB = 0; countB < b.Length; countB++)
                {
                    if (a[countA] == b[countB]) { isRepeated = true; break;}
                }
                if(!isRepeated){ adb.Add(a[countA]);}
            }
 
            //Algoritmo para añadir las letras del conjunto B al conjunto Resultante, siempre y cuando la letra no se encuentre en el conjunto A
            for (int countB = 0; countB < b.Length; countB++)
            {
                isRepeated = false;
                for (int countA = 0; countA < a.Length; countA++)
                {
                    if (a[countA] == b[countB]) { isRepeated = true; break; }
                }
                if(!isRepeated){ adb.Add(b[countB]);}
            }
 
            //Recorrer e imprimir letra por letra el conjunto Resultante
            foreach(char letter in adb){
                Console.Write(letter);
            }
 
 
            Console.ReadKey();

Analizalo, la idea es que programes los algoritmos tu o no aprenderas, suerte, bye.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con ejercicio

Publicado por loto3126 (3 intervenciones) el 27/09/2014 05:18:06
Muchas gracias, si obvio que lo voy analizar, nunca pensé que iba a ser tan detallista era una guía se valora muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar