Ayuda para realizar programa en c#

Iniciado por Adrian96, 28 Diciembre 2016, 14:15 PM

0 Miembros y 1 Visitante están viendo este tema.

Adrian96

La pregunta seria como se puede consegir que me muestre letras aleatorias de esta manera en parejas de dos
B H G H
D E A E
D G C F
C F B A



Random Letras = new Random();
           char[,] Matriz = new char[4, 4];

           for (int i = 0; i < 4; i++)
           {
               for (int j = 0; j < 4; j++)
                   Matriz[i, j] = (char)Letras.Next(65, 72);
           }
           for (int i = 0; i < 4; i++)
           {
               for (int j = 0; j < 4; j++)
                   Console.Write(Matriz[i, j] + "\t");
               Console.WriteLine();
           }
           Console.ReadKey();


Gracias de antemano :)


CoAdm: C# no es C, es .NET, movido

ivancea96

¿Que en vez de 4x4 te muestre una matriz de 2x8?

Código (csharp) [Seleccionar]
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        Console.Write(Matriz[i, j] + "\t");
        if(j == 1)
            Console.WriteLine();
    }
    Console.WriteLine();
}


Para posts futuros, ten en cuenta que este sub-foro es de C y C++, no C#. C# sería el sub-foro de .NET: http://foro.elhacker.net/net-b62.0/

Adrian96

Cita de: ivancea96 en 28 Diciembre 2016, 16:11 PM
¿Que en vez de 4x4 te muestre una matriz de 2x8?

Código (csharp) [Seleccionar]
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        Console.Write(Matriz[i, j] + "\t");
        if(j == 1)
            Console.WriteLine();
    }
    Console.WriteLine();
}


Para posts futuros, ten en cuenta que este sub-foro es de C y C++, no C#. C# sería el sub-foro de .NET: http://foro.elhacker.net/net-b62.0/

Muchas gracias por tu respuesta ivancea96, pero no era eso exactamente lo que pretendia que se entendiera con parejas me referia a que solo haya dos letras de cada y estas esten en una matriz 4x4 como se muestra arriba.

Eleкtro

Cita de: Adrian96 en 28 Diciembre 2016, 18:59 PMno era eso exactamente lo que pretendia que se entendiera con parejas

Muestra un ejemplo del resultado que esperas obtener.

Saludos!








Adrian96

Cita de: Eleкtro en 28 Diciembre 2016, 20:41 PM
Muestra un ejemplo del resultado que esperas obtener.

Saludos!

El resultado que pretendo obtener seria este:

Matriz 2x2:

A B
B A


Seria ese generar letras aleatoriamente y que estas fueran siempre 2 de la misma letra y su posicion fuera aleatoria en la matriz.


Saludos!

okik

#5
No entiendo muy bien lo que buscas a pesar de los comentarios anteriores. Pero me da la impresión que lo que quieres es obtener combinaciones sin repetición.
Si tienes A, B, C
Sería
AB
AC
BC



Si  tienes
A, B, C, D, E
(y en grupos de 3 en 3)
Sería :

A B C
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E


En cuyo caso esto obtendría las combinaciones sin repetición:
Código (csharp) [Seleccionar]

          List<string> Matriz = new List<string>();
List<string> Elementos = new List<string>();

       Elementos.AddRange(new List<string>() { "A", "B", "C", "D", "E" });
           IEnumerable<string> pairsCol = Enumerable.Empty<string>();
           pairsCol = from string value1 in Elementos
                      from string value2 in Elementos
                      select string.Join(Environment.NewLine, (from value3 in Elementos
                                                where
                                                (value1 != value2) &&
                                                (value1 != value3) &&
                                                (value2 != value3) &&
                                                 (Convert.ToChar(value2) > Convert.ToChar(value1)) &&
                                                   (Convert.ToChar(value3) > Convert.ToChar(value2))
           select  string.Format("{0} {1} {2} ", value1, value2, value3)));


List<string> ClearRep = new List<string>();
Matriz.Clear();

foreach (string pairs in pairsCol) {
foreach (string line in pairs.Split(new string[]{ Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries))
           {
Matriz.Add(line);
}

}

Console.WriteLine("Número de combinaciones: {0}", Matriz.Count);
Console.WriteLine(string.Join(Environment.NewLine, Matriz));
Console.ReadLine();



Como información extra, para calcular el número de combinaciones sin repetición se hace de la siguiente forma:

Cm,n =  m!/(n! * (m-n)!)

donde m! es el factorial de m
n! es el factorial de n
(m-n)! es el factorial de (m-n)

Por ejemplo:
Elementos = A, B, C, D, E (que son 5)
Grupos= de 3 en 3

C5,3 =  5!/(3! * (5-3)!)= 10

Espero te sirva




Chau


Adrian96

Gracias okik, me ha sido de gran ayuda   :)