5
respostas

Problema com resolução de algoritmo utilizando C#

Tenho o seguinte código:

//LoadSources --- Os número dentro do método construtor é o id sendo inicializado

LoadSource ls1 = new LoadSource(530);
LoadSource ls2 = new LoadSource(550);
LoadSource ls3 = new LoadSource(580);

//Cases --- O mesmo para os Cases
Case cs1 = new Case("A1");
Case cs2 = new Case("B1");
Case cs3 = new Case("B2");
Case cs4 = new Case("C1");
Case cs5 = new Case("C2");

    //Add Cases aos LoadSources
    //O LoadSource 530 (ls1) só tem 1 case, os demais tem 2 cases
    ls1.addCase(cs1);
    ls2.addCase(cs2);
    ls2.addCase(cs3);
    ls3.addCase(cs4);
    ls3.addCase(cs5);

    //Lista dos LoadSources
    List<LoadSource> lsList = new List<LoadSource>();

    lsList.Add(ls1);
    lsList.Add(ls2);
    lsList.Add(ls3);

               /*
                *
                * Vocês têm uma lista de LoadSources e cada LoadSource possui uma lista de Cases (já configurado acima).
                * Com base nos dados criados acima, vocês devem gerar a seguinte matriz:
                *
                * 530[A1], 550[B1], 580[C1]
                * 530[A1], 550[B2], 580[C1]
                * 530[A1], 550[B1], 580[C2]
                * 530[A1], 550[B2], 580[C2]
                * 
                * Essa matriz é resultado da combinação dos Cases, conforme exemplificado abaixo:
                * 1, 1, 1
                * 1, 2, 1
                * 1, 1, 2
                * 1, 2, 2
                *
                */

O que fiz, mas não está saindo o resultado esperado... Ele está pegando um LoadSource e lista todos os seus cases em seguida. (O que não é o correto), gostaria de uma ajuda

   foreach (var ls in lsList)
                {
                    foreach (var cs in ls.caseList)
                    {
                        Console.Write("{0} [{1}] ", ls.id, cs.id);
                    }
                }
5 respostas

Poderia explicar um pouco mais sobre seu algoritmo porque não esta muito claro o que ele deve fazer. Se poder enviar o projeto todo seria mais fácil também.

No caso, tenho que imprimir os loadsources seguido dos seus cases na seguinte ordem:

    530[A1], 550[B1], 580[C1]
    530[A1], 550[B2], 580[C1]
    530[A1], 550[B1], 580[C2]
    530[A1], 550[B2], 580[C2]

Entenda que o número fora do colchetes [] é o ID do LoadSource e o número dentro do colchetes [] é o ID do Case...

o LoadSource de ID 530, tem apenas 1 case, o LoadSource de ID 550 tem 2 cases e o LoadSource de ID 580 tbm tem 2 cases...

Com isso, teria que listar nesta sequência mostrada acima utilizando o princípio da permutação.

como esta sendo exibido o resultado ??

530 [A1]
550 [B1]
550 [B2]
580 [C1]
580 [C2]

A saída está sendo essa... Ele está pegando um LoadSource e listando todos os seus cases...

Como o LoadSource (530) tem apenas um case, ele só exibi o [A1]

Já o LoadSource (550) tem dois cases, logo ele exibe dois cases, o mesmo serve para o LoadSource (580)

A maneira como você montou o algoritmo não vai gerar o resultado que deseja, será um pouco mais complexo de gerar esse resultado. Gostaria de entender seu objetivo com esse algoritmo pra poder te dar uma ideia de como pode resolver ele sem muitos problemas.