Najprej od uporabnika zahtevamo ime datoteke s katere bomo prebrali podatke
Console.Write("Vnesi ime Datoteke: ");
string datoteka=Console.ReadLine();
Nato preverimo, če datoteka obstaja. V primeru,da datoteka obstaja, ustvarimo nekaj pomožnih tabel, ki jih bomo rabili pri reševanju.
string RezIme = "";//niz, ki nam pove imena TV programov
string indeksiImen = "";//niz v katerem imamo indekse imen.
string[] imeTV = new string[0];//tabela imen programov
DateTime[] zacetki = new DateTime[0];//tabela začetkov predvajanja oglasa
DateTime[] konci = new DateTime[0];//tabela koncev predvajanja oglasa
DateTime[] CasOglasa = new DateTime[2];//Začetek in konec največ hkratnih oglasov
int stevilo = 0;
Odpremo datoteko in se z zanko while sprehodimo skozi datoteko. Podatke v vsaki vrstici pa razdelimo v več tabel. Na primer podatke začetka predvajanja dodamo v tabelo, kjer hranimo podatke o začetkih predvajanj oglasa.
while (vrstica != null)
{
string[] trenutna = vrstica.Split(' ');
string ime = "";
//sestavimo ime tv kanala
for (int i = 0; i < trenutna.Length - 2; i++)
{
ime += trenutna[i] + "";
}
string[] tab1 = dodajIme(imeTV, ime);//ime dodamo v tabelo imen
imeTV = tab1;
//Začetek predvajanja spremenimo iz niza v objekt tipa DateTime
string[] tabCas = trenutna[trenutna.Length - 2].Split(':');
int[] tabCasZacetek = new int[tabCas.Length];
for (int i = 0; i < tabCas.Length; i++)
{
tabCasZacetek[i] = int.Parse(tabCas[i]);
}
DateTime cas1 = new DateTime(1, 1, 1, tabCasZacetek[0], tabCasZacetek[1], tabCasZacetek[2]);
//Začetek predvajanja zapišemo v tabelo, kjer hranimo začetke predvajanj.
zacetki = DodajCas(zacetki, cas1);
//Konec predvajanja spremenimo iz niza v objekt tipa DateTime
tabCas = trenutna[trenutna.Length - 1].Split(':');
int[] tabCasKonec = new int[tabCas.Length];
for (int i = 0; i < tabCas.Length; i++)
{
tabCasKonec[i] = int.Parse(tabCas[i]);
}
DateTime cas2 = new DateTime(1, 1, 1, tabCasKonec[0], tabCasKonec[1], tabCasKonec[2]);
//Konec predvajanja zapišemo v tabelo, kjer hranimo začetke predvajanj.
konci = DodajCas(konci, cas2);
vrstica = beri.ReadLine();
}
Ko imamo podatke sortirane, pa preštejemo vse TV programe, ki so istočsno predvajali oglas. To naredimo tako, da gremo skozi tabelo kjer hranimo konce predvajanj in pogledamo, če se slučajno ujemata. Če se ujemata pa primerjamo še začetka predvajanj. Tudi ta dva podatka se morata ujemati. Istočasno pa si zapomnimo tudi indekse imen,ki jih imamo shranjene v tabeli imen.
//gremo skozi tabelo koncev in pogledamo ujemanja.
//poiščemo tudi indekse imen
for (int i = 0; i < konci.Length; i++)
{
int st = 0;
string imena = "";
for (int j = i + 1; j < konci.Length; j++)
{
if ((konci[i] == konci[j]) && (zacetki[i] == zacetki[j]))
{
imena += "" + i + ";" + j + ";";
if (st == 0)
{
st++;
}
st++;
}
}
if (st > stevilo)
{
stevilo = st;
indeksiImen = imena;
}
}