Задание на курсовую работу
Банда из k зайцев совершила разбойный налѐт на склад с капустой и похитила n кочанов.Лиса в это время пробегала мимо и предложила им поделить награбленную капусту поровну между всеми членами банды. Зайцы согласились, условившись с лисой, что всем зайцам достанется одинаковое количество кочанов капусты, а остаток размером менее k кочанов лиса сможет забрать себе как плату за эту услугу. Между тем, при разделе капусты к банде присоединился один заяц, который не принимал участия в налѐте. Он получил ровно такую же долю, как и члены банды, однако остался незамеченным. «Почему?» - спросите вы. Дело в том, что каждый заяц получил такое же количество кочанов капусты, какое получил бы, если бы самозванец при разделе не присутствовал. Найдите минимальное количество зайцев в банде, при котором такое могло произойти.
Описание принципа работы приложения
При запуске приложения пользователю предложено ввести данные задачи :
- Количество кочанов капусты N
- Количество зайцев в банде K
На все значения накладываются определенные ограничения с целью получения корректного решения, то есть нельзя вводить текст.
После введения исходных данных нужно нажать кнопку «рассчитать», после чего задача будет решена и минимальное количество зайцев в банде будет выведено в текстовое поле.
В данном приложении пользователь может создать задачу с новыми данными, не выходя из приложения. Данные просто нужно ввести заново или изменить некоторые значения.
Пользователь может сохранить данные проекта, для этого нужно нажать кнопку Сохранить.
Если у пользователя возникли проблемы с работой с приложением, он может обратиться за помощью к Справке. Справка содержит текст задачи, а так же информацию о том, кто разработал данное приложение.
Содержание отчета к программе:
Введение
- Задание на курсовую работу
- Постановка задачи
- Круг пользователей приложения
- Информация, вводимая пользователем приложения
- Результаты, которые необходимо получить с помощью приложения
- Сохранение информации
- Требования к пользовательскому интерфейсу и приемы обработки ошибок пользователя
- Проектная часть
- Описание принципа работы приложения
- Структура свойств объектов
- Таблицы объектов и идентификаторов
- Функциональное описание
- Пример работы программы
Заключение
Приложение
Фрагмент программного кода
namespace Task { public partial class Form1 : Form { int n, k; //переменные кочанов капусты и зайцев private Log log = Log.Instance;//переменная для работы с классом Log ( для открытия данных из файла) private List<Result> resultList;//определение переменной public Form1() { InitializeComponent();//инициализация resultList = new List<Result>(); } private void справкаToolStripMenuItem_Click(object sender, EventArgs e)//событие нажатия кнопки справка { HelpForm help = new HelpForm();//создание формы help.ShowDialog();//вызов формы } private void выходToolStripMenuItem_Click(object sender, EventArgs e)//событие нажатия кнопки выход { Close();//закрытие приложения } private void calc(int n, int k)//ф-я расчетов { Result res = new Result();//переменная результата int pay = n / k;//количество кочанов, которое ожидает получить каждый участник банды int residue = n % k;//плата лисе if (residue == 0)//если палата = 0, значит участники ограбления рассчитывают на n / k кочанов, и при присоединении к ним зайца он будет раскрыт (плата каждому участнику уменьшится) { System.Windows.Forms.MessageBox.Show("Присоединившийся заяц будет замечен (см. условие задачи)");//текстовое сообщение return; } res.Cabbages = n; res.Hares = k; //ищем такое количество участников, что при добавлении еще 1 плата уменьшается int new_pay = 0;//текущая плата int catch_band = 0;//после цикла переменная сожержит такое кол-во банд, при котором зайца раскроют do//цикл с постусловием (выполняется. пока не выполнится условие pay == new_pay ) { catch_band = --k + 1; new_pay = n / (catch_band); } while (pay == new_pay);//если плата изменяется, зайца раскроют int min_band = catch_band + 1; //находим минимальное кол-во банд, при которых зайца не раскроют res.Message = String.Format(" Минимальное количество зайцев (k) = {0} ", min_band);//вывод сообщения listOfRes.Items.Add(res.Message);//добавляем в листбокс данные resultList.Add(res); } private void btnProc_Click(object sender, EventArgs e)//событие кнопки рассчитать { try//проверка условия {//если введены цифры (можно только цифры) n = System.Convert.ToInt32(txtN.Text);//конвертация вводимых данных в формат Int k = System.Convert.ToInt32(txtK.Text);//конвертация вводимых данных в формат Int if ((k > n) || (k == 0) || (n == 0)) throw new Exception(); } catch (Exception)//если введены не цифры. либо данные некорректны { System.Windows.Forms.MessageBox.Show("Данные введены неверно!");//уведомление return; } calc(n, k);//вызов функции подсчета }
Содержание архива
- исходный код на C# для Visual Studio
- пояснительная записка к курсовой работе (10 страниц)
klausms