public static void ProcessaIO(Processo processo) { var bound = 0; while (bound < 100 && processo.Ciclos > 0) { processo.Ciclos--; bound++; } if (bound > 0) { Console.WriteLine(string.Format("CICLO NUMERO: {0}, PROCESSO {1} DO TIPO {3} EXECUTOU POR UNIDADES {2} DE TEMPO", processo.Num, processo.Nome, bound, processo.Tipo)); } }
static void Main(string[] args) { Console.WriteLine(" `` "); Console.WriteLine(" :;;::'': "); Console.WriteLine(" `',`....`;'. "); Console.WriteLine(" `'`........,'. "); Console.WriteLine(" '...,,,,,,,,:'` "); Console.WriteLine(" ;:,,,,,,,,,,:,+; "); Console.WriteLine(" ',,,,,,::::::::+` "); Console.WriteLine(" ;',:::::::::::::#; "); Console.WriteLine(" '::@,,+;::;;;;;;+' "); Console.WriteLine(" .+:#:@@+;;;;;;;;;'+, "); Console.WriteLine(" ;#+;+``.@@;'@+'@''#; "); Console.WriteLine(" '#'@,.`..+'@'@#;#+#' "); Console.WriteLine(" '#',...`.##@:``;+@@+` "); Console.WriteLine(" `+@#,.```.,@,..`.,+@+. "); Console.WriteLine(" ,+@@..```',+..```.#@#: "); Console.WriteLine(" :#@#.````@;':````.:@#; "); Console.WriteLine(" ;#@+,```,@#@,````.,@#' "); Console.WriteLine(" '#@#,```.@@@@````.,@#' "); Console.WriteLine(" '#@@,.```+++@````.;@#' "); Console.WriteLine(" '#@@,.```.,#,.`...@@@' "); Console.WriteLine(" +@@@:,..,``.,,.``'@@@+ "); Console.WriteLine(" +@@@@...:``.,,,,@@@@@+` "); Console.WriteLine(" ,#@@@@#.`::,.,,:.@@@@@#: "); Console.WriteLine(" ;#@@@@`,:::::,,,``@@@@#' "); Console.WriteLine(" .,@@@@```..::,::.`` @@@@', "); Console.WriteLine(" ::@@@+````,,:::,.```;@@@'. "); Console.WriteLine(" ,,'@@@`````.,:::.`````@@@#.: "); Console.WriteLine(" ,:#@@+``````,,:,.`````;@@@,,` "); Console.WriteLine(" ::'@@@```````....```````@@@':, "); Console.WriteLine(" ;:'@@@@`````````.````````#@@@':: "); Console.WriteLine(" ::'@@@@;``````````````````,@@@@+:: "); Console.WriteLine(" `:'##@@@````````````````````@@@##':. "); Console.WriteLine(" :;++##@@````````````````````@@##++;: "); Console.WriteLine(" `:+';`#@@....................#@#`;'+;. "); Console.WriteLine(" ,;;` +@#....................+@+ ;;, "); Console.WriteLine(" .: '#'....................:#+ ,, "); Console.WriteLine(" '#:....................,#' "); Console.WriteLine(" :#,....................,#: "); Console.WriteLine(" :#,.....................#: "); Console.WriteLine(" ,:,.....................:: "); Console.WriteLine(" ,,,,,,,,,,,,,,,,,,,,,,,:` "); Console.WriteLine(" :.,,,,,,,,,,,,,,,,,,,,.: "); Console.WriteLine(" :,.,,,,,,,,,,,,,,,,,,.,; "); Console.WriteLine(" :.:::,,,,,,,,,,,,::,,:` "); Console.WriteLine(" ':;;;;:,,,,,,,,:;;;;:' "); Console.WriteLine(" ,:;:::;::,,,,,:;;::;:, "); Console.WriteLine(" ,,```.::;:,,,,:;::,```., "); Console.WriteLine(" ..`````,::;:,,:;:::``````, "); Console.WriteLine(" `,.......::::,,::::.......,. "); Console.WriteLine(" ,,.......:::;,,;:::........, "); Console.WriteLine(" ,,,,,...,:::;:,;:::....,,,,:. "); Console.WriteLine(" `.::,,,,,,,:::;::;;:::,,,,,,,:,` "); Console.WriteLine(" ``,:;:::::::::;;::;;;:::::::::::` "); Console.WriteLine(" `.,:;;::::::;;;;'';;;;::::::;;:,.` "); Console.WriteLine(" `.,::;;;;;;;;;'''''';;;;;;;;:::,.` "); Console.WriteLine(" ``..,,,,,::::::;;;;::::::,,,,,..` "); Console.WriteLine(" ````........,,,,,,.......````` "); Console.WriteLine(" ```````````````` "); Console.WriteLine(" "); Console.WriteLine(" "); Console.WriteLine(" "); Console.WriteLine(" "); Console.WriteLine(" "); Console.WriteLine(" "); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine("Digite os valores de entrata no formato nome,ciclos,tipo"); var input = Console.ReadLine(); var processos = new List <Processo>(); var count = 1; while (!input.Equals("X")) { var dados = input.Split(','); try { var processo = new Processo { Nome = dados[0], Ciclos = Int32.Parse(dados[1]), Tipo = (Tipo)Enum.Parse(typeof(Tipo), dados[2]), }; if (processos.Select(a => a.Nome).Contains(processo.Nome)) { Console.WriteLine("Ja existe um processo com este nome."); } else { processo.Num = count; processos.Add(processo); count++; } } catch (Exception e) { Console.WriteLine("Dados em formato incorreto"); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Digite os novos dados ou X para sair:"); input = Console.ReadLine(); } processos.Add(new Processo { Nome = "A", Ciclos = 170, Tipo = Tipo.C, Num = 1 }); processos.Add(new Processo { Nome = "B", Ciclos = 25, Tipo = Tipo.C, Num = 2 }); processos.Add(new Processo { Nome = "C", Ciclos = 1000, Tipo = Tipo.C, Num = 3 }); processos.Add(new Processo { Nome = "D", Ciclos = 50, Tipo = Tipo.I, Num = 4 }); processos.Add(new Processo { Nome = "E", Ciclos = 35, Tipo = Tipo.I, Num = 5 }); processos.Add(new Processo { Nome = "F", Ciclos = 200, Tipo = Tipo.I, Num = 6 }); processos.Add(new Processo { Nome = "G", Ciclos = 200, Tipo = Tipo.I, Num = 7 }); processos = OrderList(processos); while (processos.Select(a => a.Ciclos).Sum() > 0) { foreach (var processo in processos) { if (processo.Tipo == Tipo.I) { ProcessaIO(processo); } else { ProcessaCPU(processo); } } } Console.ReadLine(); }