Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 22:23   #1
nikitaivanov
 
Регистрация: 29.12.2011
Сообщений: 3
По умолчанию C#, распределение студентов по группам

Задание:
Выполняя программу "Обмен студентами", университету необходимо
создать n групп студентов. В каждой группе должны быть представлены студенты разных факультетов, по возможности равномерно. Каждый факультет в соответствии с численностью выделил для поездки лучших своих студентов. Составлен общий список студентов, упорядоченный по их фамилиям. Необходимо распределить студентов по группам.
_______________
Вобщем, трудное для понимания задание. Я хочу выполнить его так:
пользователь вводит количество студентов с КАЖДОГО факультета, которые выделяются для поездки. То бишь, допустим, с первого факультета поедет 2 человека, со второго - 5 и т.д. Так вот, как мне сделать так, чтобы в итоговом списке групп всё соответсвовало заданным количествам?
мой код:

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Laba6_2
{
    
        class Student
    {
        
        public enum Facultet { English, Programming, History, Economics, distanceLearning };
        string name;
        
        public Facultet facult;
        Student(string s)
        {
            name = s;
        }
        
        public void vibor()
        {
            
                    switch(facult)
            {
                    
                
                    case Facultet.English:
                    Console.WriteLine(name + " Факультет иностранных языков ");
                    break;
                
                    case Facultet.Programming:
                    Console.WriteLine(name + " Факультет информационных систем и технологий ");
                    break;
                
                    case Facultet.History:
                    Console.WriteLine(name + " Факультет истории ");
                    break;
               
                    case Facultet.Economics:
                    Console.WriteLine(name + " Факультет экономики ");
                    break;
                
                    case Facultet.distanceLearning:
                    Console.WriteLine(name + " Факультет заочного обучения ");
                    break;
            
            }
        }
        static void Main(string[] args)
        {
            
            Console.WriteLine("Количество студентов с Факультета иностранных языков:");
            int inyaz = int.Parse(Console.ReadLine());
            Console.WriteLine("Количество студентов с Факультета информационных систем и технологий:");
            int infs = int.Parse(Console.ReadLine());
            Console.WriteLine("Количество студентов с Факультета истории:");
            int ist = int.Parse(Console.ReadLine());
            Console.WriteLine("Количество студентов с Факультета экономики:");
            int ec = int.Parse(Console.ReadLine());
            Console.WriteLine("Количество студентов с Факультета заочного обучения:");
            int zaoch = int.Parse(Console.ReadLine());

                Console.WriteLine("Введите количество групп:");
                int n = int.Parse(Console.ReadLine());
                Console.WriteLine("Введите количество студентов в группах:");
                int m = int.Parse(Console.ReadLine());
                                        
            Student[] a = new Student[n * m];
            
            int nStudent = 0, nF  = 0;
            int nF1 = 0, nF2 = 0, nF3 = 0, nF4 = 0, nF5 = 0; //это количества повторений номеров факультетов в цикле далее
            for (int i = 0; i < n * m; i++)
            {
                
                nStudent++;
                
                if (nStudent > m) nStudent = 1;
              
                a[i] = new Student("№ " + nStudent + ".");
                nF++;

                switch (nF)
                {
                    case 1: nF1++; break;
                    case 2: nF2++; break;
                    case 3: nF3++; break;
                    case 4: nF4++; break;
                    case 5: nF5++; break;
                }
                               
                if (nF >= 5) nF = 0;

                if (nF == 1 && nF1 > inyaz) nF = 2;
                if (nF == 2 && nF2 > infs) nF = 3;
                if (nF == 3 && nF3 > ist) nF = 4;
                if (nF == 4 && nF4 > ec) nF = 5;
                if (nF == 5 && nF5 > zaoch) nF = 1;

                a[i].facult = (Facultet)nF;
              
            }
            
            int count = 0, number = 1;
            Console.WriteLine("\n Группа № " + number);
            
                foreach(Student q in a)
            {
                
                if (count == m) { count = 0; number++; Console.WriteLine("Группа № " + number); }
                
                q.vibor();
                count++;
            }

            Console.ReadLine();
        }
    }
}
не могу никак понять как его поправить.
nikitaivanov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка из TMEMO в TEDIT по группам Mariner_dmx Общие вопросы Delphi 16 17.06.2014 16:34
Суммировать данные по группам tgm Microsoft Office Excel 0 12.02.2011 22:51
макрос для группировки записей и запись в новые листы по группам MrGB Microsoft Office Excel 27 30.10.2010 00:30
Сложнейший алгоритм (сортировка последовательности чисел по группам) Владимир777 Фриланс 3 02.03.2010 21:50
Распределение ячеек по группам yuretsnsk Microsoft Office Excel 3 16.06.2009 11:01