} //ha fogadtak a hivast, akkor a beszelgetes kezdete public Hivas(int id, string adat) { ID = id; string[] adatok = adat.Split(' '); Hiv = new Ido(adatok[0], adatok[1], adatok[2]); Bont = new Ido(adatok[3], adatok[4], adatok[5]); Kezd = new Ido("0", "0", "0"); }
static void Input() { using (System.IO.StreamReader sr = new System.IO.StreamReader("hivas.txt")) { Ido veg = new Ido("12", "0", "0"); N = 0; //az 0. hívás a nyitás előtt "foglalt jelzést ad" hivasok.Add(new Hivas(N, "0 0 0 8 0 0")); int utolso = 0; while (!sr.EndOfStream) { N++; hivasok.Add(new Hivas(N, sr.ReadLine())); /*Beszélgetés kezdete = hívás pillanata vagy az előző beszélgetés vége, ami megelőző legutolsó bontás. * Munkaidő előtt a 0. hívó "beszél", munkaidő után nem lehet beszélni. * Ha a hívást fogadják, az adott hívás bontása lesz a foglaltság utolsó pillanata */ if (hivasok[N].Hiv.mpTicks() < veg.mpTicks() && hivasok[N].Bont.mpTicks() > hivasok[utolso].Bont.mpTicks()) { /* * Ha az előző beszélgetés bontása a hívást követően volt, akkor a bontás pillanata lesz a kezdés */ if (hivasok[N].Hiv.mpTicks() < hivasok[utolso].Bont.mpTicks()) { hivasok[N].Kezd = hivasok[utolso].Bont; } /*ha hívás előtt volt az előző bontása, akkor a hívás ideje lesz a beszélgetés kezdete*/ else { hivasok[N].Kezd = hivasok[N].Hiv; } utolso = N; } } } }
private static void Egyidopont() { Console.Write("Adjon meg egy idopontot! (ora perc masodperc): "); string[] adatok = Console.ReadLine().Split(' '); int idopont = new Ido(adatok[0], adatok[1], adatok[2]).mpTicks(); int beszelo = -1; int db = 0; int i = 1; while (i <= N && hivasok[i].Bont.mpTicks() < idopont) { i++; } if (i <= N) { beszelo = i; while (hivasok[i].Hiv.mpTicks() <= idopont) { if (hivasok[i].Bont.mpTicks() > idopont) { db++; } i++; } } if (db == 0) { Console.WriteLine("Nem volt beszelo."); } else { Console.WriteLine("A varakozok szama: {0} a beszelo a {1}. hivo", db - 1, hivasok[beszelo].ID); } }