none
Array RRS feed

  • Pergunta

  •   Olá Pessoal,

         Estou com o seguinte problema, tive pesquisando array, de repente pode ser por esse caminho, ou se alguém tiver outro...

        Tenho um conjunto de ALUNOS (quantidade variável) e estes tem que ser divididos para serem inseridos em TURMAS (quantidades variáveis) exemplo abaixo:

           60 ALUNOS para duas TURMAS, ou seja cada TURMA 30 ALUNOS (tranquilo...),

           60 ALUNOS para três TURMAS, ou seja cada TURMA 20 ALUNOS (tranquilo...), mas

           67 ALUNOS para 2 ou 3 TURMAS esbarramos na divisão não exata, se dividido por 2 (duas TURMAS), posso ter uma TURMA com 33 ALUNOS e outra com 34 ALUNOS (vise-versa ok), sem problemas... ou se, dividido por 3, podemos ter duas TURMAS com 22 ALUNOS e uma TURMA com 23 ALUNOS (vice-versa ok). Enfim o 'resto' da divisão sempre pode-se ser alocado em qualquer TURMA sem problemas.

           Como refazer ou montar esses 'conjuntos'  de elementos (TURMAS de ALUNOS)  a partir de um conjunto maior (QUANTIDADE conhecida de alunos)? Importante salientar que o número de total de ALUNOS para um número total de TURMAS sempre podem variar a ponto de como no exemplo não haver divisão exata de nº ALUNOS/ nº TURMAS.

          Estava pensando em solucionar esse problemas através de array. Um array recebendo o total de nomes, e este dividido pelo total de TURMAS...

          Mas como percorrer o array e 'retirando' as partes, um conjuntos de cada vez? E se houver 'resto', também 'retira-los' e aloca-los em qualquer uma das TURMAS?

        (Aplicativo escolar feito em MVC)

    Desde de já Grato.

        

    segunda-feira, 25 de janeiro de 2016 23:02

Todas as Respostas

  • Em c# existe um operador chamado "MOD" que é representado pelo sinal "%", ele retorna o resto da divisão.

    No seu caso, você tem 67 anos, para dividir por 2 turmas, e aí daria 33 + 34.
    Você poderia fazer assim:

    int qtdAlunos = meuArrayComTodosOsAlunos.Lenght;
    int qtdAlunosPorTurma =  qtdAlunos / 2; //O retorno seria 33.5 mas como a variavel é  inteiro seria arredondado para 33
    int qtdAlunosQueSobraram = qtdAlunos % 2; //O retorno será 1

    • Sugerido como Resposta André Santo quarta-feira, 27 de janeiro de 2016 18:21
    terça-feira, 26 de janeiro de 2016 16:01