Смоделировать процесс обработки на станке 100 деталей. Подсчитать число заполненных тележек и число потерянных деталей - C#
Формулировка задачи:
Условие задачи:
С интервалом времени 5 ± 2мин. детали поштучно поступают к станку на обработку и до начала обработки хранятся на рабочем столе, который вмещает 3 детали. Если свободных мест на столе нет, вновь поступающие детали укладываются в тележку, которая вмещает 5 деталей, если тележка заполняется до нормы, ее увозят к другим станкам, а на ее место через 8 ± 3мин. ставят новую тележку. Если во время отсутствия тележки поступает очередная деталь и не находит на столе мест, она считается потерянной. Рабочий берет детали на обработку в первую очередь из тележки, а если она пуста – со стола. Обработка деталей производится за 10 ± 5мин. Смоделировать процесс обработки на станке 100 деталей. Подсчитать число заполненных тележек и число потерянных деталей.
В Windows Forms делал на C#. Не могу понять как описать часть про тележку и 8 ± 3мин.
Создал 3 таймера:
1ый для 5 ± 2мин - поступление детали, работает пока не будет 100 деталей запущено.
2ой для 10 ± 5мин - обработка детали на станке, timer.stop() когда количество деталей =100 и стол пуст и телега пуста.
а вот с 3им для 8 ± 3мин. - проблема. Не могу понять, как описать условие - если интервал таймера закончился, то таймер выключить. Так как потом мы его еще будем включать. Помогите пожалуйста.
Решение задачи: «Смоделировать процесс обработки на станке 100 деталей. Подсчитать число заполненных тележек и число потерянных деталей»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace KURSOV { public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool net_telegi=false; // индикатор телеги bool det_rab=false; // =true если деталь в обработке int kol_det = 0; // количество деталей вступивших в оборот int rab_stol = 0; // количество деталей находящихся на столе int telega = 0; // количество деталей находящихся в телеге int poteri = 0; // количество потерянных деталей int kol_teleg = 0; // количество использованных телег int result = 0; // количество деталей вступивших в систему int time1 = 5; // Основное время поступления детали int time2 = 2; // +\- для времени поступления деталей int time3 = 8; // Основное время через которое ставят тележку int time4 = 3; // +\- для времени через которое ставят тележку int time5 = 10; // Основное время обработки детали на станке int time6 = 5; // +\- для времени обработки детали на станке int t1, t2, t3; //временные интервалы int k, l, m, tl, tm; // переменные циклов-счетчиков private void tabPage1_Click(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) // ПРИМЕНЕНИЕ ИЗМЕНЕНИЙ { time1 = Convert.ToInt32(textBox1.Text); time2 = Convert.ToInt32(textBox2.Text); time3 = Convert.ToInt32(textBox3.Text); time4 = Convert.ToInt32(textBox4.Text); time5 = Convert.ToInt32(textBox5.Text); time6 = Convert.ToInt32(textBox6.Text); } private void button4_Click(object sender, EventArgs e) // ВЫСТАВИТЬ УМОЛЧАНИЯ { time1 = 5; time2 = 2; time3 = 8; time4 = 3; time5 = 10; time6 = 5; } private void button2_Click(object sender, EventArgs e) // ЗАПУСК { Random rnd1 = new Random(); t1 = rnd1.Next(time1-time2,time1+time2); textBox14.Text = Convert.ToString(t1); Random rnd2 = new Random(); t2 = rnd2.Next(time5 - time6, time5 + time6); textBox15.Text = Convert.ToString(t2); Random rnd3 = new Random(); t3 = rnd3.Next(time3 - time4, time3 + time4); textBox16.Text = Convert.ToString(t3); det_rab = true; if (t1 > t2) { tl = t1; tm=t2;} else { tl = t2; tm=t1; } while (l <= tl*100) { for (m = 0; m <= tm * 100; m++) { l++; if (m % t2 == 0) { result++; det_rab = false; if ((telega != 0) & (net_telegi == false)) { telega--; det_rab = true; } else { rab_stol--; det_rab = true; } } if (l % t1 == 0) { kol_det++; if (rab_stol < 3) { rab_stol++; kol_det--; } else if ((telega < 5) & (net_telegi == false)) { telega++; kol_det--; } else if (net_telegi == true) { poteri++; kol_det--; } else { kol_teleg++; poteri++; kol_det--; net_telegi = true; for (k = 0; k <= t3; k++) { if (k == t3) { net_telegi = false; telega = 0; } } } } } } MessageBox.Show("Моделирование завершено!\n" + "Потрачено времени: " + l + " минут"); textBox11.Text = Convert.ToString(kol_teleg); textBox10.Text = Convert.ToString(poteri); textBox9.Text = Convert.ToString(result); textBox7.Text = Convert.ToString(kol_det); textBox8.Text = Convert.ToString(det_rab); textBox12.Text = Convert.ToString(rab_stol); textBox13.Text = Convert.ToString(telega); textBox17.Text = Convert.ToString(net_telegi); } private void button3_Click(object sender, EventArgs e) // ОЧИСТИТЬ ВСЕ { textBox14.Text = ""; // очистить t1 textBox15.Text = ""; // очистить t2 textBox16.Text = ""; // очистить t3 textBox11.Text = ""; // очистить количество телег kol_teleg textBox10.Text = ""; // очистить количество потери poteri textBox9.Text = ""; // очистить количество деталей result textBox7.Text = ""; // очистить количество деталей kol_det textBox8.Text = ""; // очистить детали из обработки det_rab textBox12.Text = ""; // очистить рабочий стол rab_stol textBox13.Text = ""; // очистить тележку telega textBox17.Text = ""; // очистить индикатор net_telegi net_telegi = false; // индикатор телеги det_rab = false; // =true если деталь в обработке kol_det = 0; // количество деталей вступивших в оборот rab_stol = 0; // количество деталей находящихся на столе telega = 0; // количество деталей находящихся в телег poteri = 0; // количество потерянных деталей kol_teleg = 0; // количество использованных телег result = 0; // количество деталей вступивших в систему k = 0; l = 0; tl = 0; tm = 0; m = 0; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д