using System; using System.IO; using System.Collections.Generic; using System.Runtime.Serialization.Formatters; using System.Reflection.Emit; namespace sebesseg { internal class Program { struct ADAT { public int tavolsag; public string valtozas; } static void Main(string[] args) { StreamReader befajl = new StreamReader("ut.txt"); List sebesseg = new List(); ADAT seged; int hosszut = Convert.ToInt32(befajl.ReadLine()); do { string[] sorreszek = befajl.ReadLine().Split(' '); seged.tavolsag = Convert.ToInt32(sorreszek[0]); seged.valtozas = sorreszek[1]; sebesseg.Add(seged); }while (!befajl.EndOfStream); befajl.Close(); Console.WriteLine(hosszut); /*for (int i = 1; i <= sebesseg.Count; i++) { Console.WriteLine(sebesseg[i-1].tavolsag + " " + sebesseg[i-1].valtozas); }*/ #region 2.feladat Console.WriteLine("2.feladat"); for (int i = 1; i <= sebesseg.Count; i++) { if (sebesseg[i-1].valtozas.Length>=4) { Console.WriteLine(sebesseg[i - 1].valtozas); } } #endregion #region 3.feladat int[] ertekek = new int[sebesseg.Count]; int dbvaros = 0; int dbzaro = 0; for (int i = 1; i <=sebesseg.Count ; i++) { ertekek[i - 1] = 0; } for (int i = 1; i <= sebesseg.Count; i++) { if (sebesseg[i-1].valtozas=="#") { for (int j= 1; j<=i; j++) { if (sebesseg[j-1].valtozas.Length>=4 ) { dbvaros++; } if (sebesseg[j-1].valtozas=="]") { dbzaro++; } } if (dbvaros!=dbzaro && dbvaros!=0 || dbzaro!=0) { ertekek[i - 1] = 50; } if (dbvaros==dbzaro) { ertekek[i - 1] = 90; } dbvaros = 0; dbzaro = 0; } if (sebesseg[i - 1].valtozas == "%") { for (int j = 1; j <= i; j++) { if (sebesseg[j - 1].valtozas.Length >= 4) { dbvaros++; } if (sebesseg[j - 1].valtozas == "]") { dbzaro++; } } if (dbvaros != dbzaro && dbvaros != 0 || dbzaro != 0) { ertekek[i - 1] = 50; } if (dbvaros == dbzaro) { ertekek[i - 1] = 90; } dbvaros = 0; dbzaro = 0; } if (sebesseg[i - 1].valtozas == "]") { for (int j = 1; j <=i; j++) { if (sebesseg[j - 1].valtozas.Length >= 4) { dbvaros++; } if (sebesseg[j - 1].valtozas == "]") { dbzaro++; } } if (dbvaros != dbzaro && dbvaros != 0 || dbzaro != 0) { ertekek[i - 1] = 50; } if (dbvaros == dbzaro) { ertekek[i - 1] = 90; } dbvaros = 0; dbzaro = 0; } if (sebesseg[i - 1].valtozas.Length >= 4) { ertekek[i - 1] = 50; } } for (int i = 1; i <= sebesseg.Count ; i++) { if (ertekek[i-1]==0) { ertekek[i - 1] = Convert.ToInt32(sebesseg[i - 1].valtozas); } } /* for (int i = 1; i <= sebesseg.Count; i++) { Console.WriteLine(ertekek[i - 1]); }*/ Console.WriteLine("3.feladat"); Console.WriteLine("Adja meg a vizsgált szakasz hosszát km-ben!"); double vizsgalt = Convert.ToDouble(Console.ReadLine()); int szamlalo = 1; int legkisebb = 1; while (vizsgalt * 1000 >= sebesseg[szamlalo-1].tavolsag) { if (ertekek[szamlalo - 1] < ertekek[legkisebb-1]) { legkisebb = szamlalo; } szamlalo++; } Console.WriteLine(" Az első {0} km-em {1} km/h volt legalacsonyabb megengedett sebesség", vizsgalt, ertekek[legkisebb-1]); #endregion #region 4.feladat Console.WriteLine("4.feladat"); double osszeg = 0; List telepules = new List(); for (int i = 1; i <= sebesseg.Count; i++) { if (sebesseg[i - 1].valtozas.Length >= 4 || sebesseg[i - 1].valtozas=="]") { telepules.Add(sebesseg[i-1].tavolsag); } } for (int i = 1;i <= telepules.Count;i=i+2) { osszeg = osszeg + telepules[i] - telepules[i - 1]; } Console.WriteLine("Az út {0} százaléka vezet településen keresztül", Math.Round(osszeg/hosszut*100, 2)); #endregion #region 5.feladat Console.WriteLine("5.feladat"); Console.WriteLine("Add meg egy település nevét"); string nev = Console.ReadLine(); szamlalo = 1; while (sebesseg[szamlalo-1].valtozas != nev) { szamlalo++; } int szamlalo2 = szamlalo; while (sebesseg[szamlalo2 - 1].valtozas != "]") { szamlalo2++; } int sebessegkorlatozotablak = 0; for (int i = szamlalo; i <= szamlalo2; i++) { if (sebesseg[i-1].valtozas!="#" && sebesseg[i - 1].valtozas != "]" && sebesseg[i - 1].valtozas != "%" && sebesseg[i - 1].valtozas.Length<=4) { sebessegkorlatozotablak++; } } int telepuleshossz = sebesseg[szamlalo2 - 1].tavolsag - sebesseg[szamlalo - 1].tavolsag; Console.WriteLine("A sebességkorlátozótáblák száma: " + sebessegkorlatozotablak); Console.WriteLine("Az út hossza a településen belül: " + telepuleshossz + " méter."); #endregion #region 6.feladat Console.WriteLine("6.feladat"); int korabbitelepules = szamlalo; int kesobbitelepules = szamlalo2; while (korabbitelepules >= 1 && sebesseg[korabbitelepules-1].valtozas != "]") { korabbitelepules--; } while (kesobbitelepules <= sebesseg.Count && sebesseg[kesobbitelepules - 1].valtozas.Length <4) { kesobbitelepules++; } int korabbitelepulestavolsag = sebesseg[szamlalo - 1].tavolsag - sebesseg[korabbitelepules - 1].tavolsag; int kesobbitelepulestavolsag = sebesseg[kesobbitelepules - 1].tavolsag - sebesseg[szamlalo2 - 1].tavolsag; if (korabbitelepulestavolsag kesobbitelepulestavolsag) { Console.WriteLine(sebesseg[kesobbitelepules - 1].valtozas); }else { Console.WriteLine("Ugyanakkora távolság, attól függ hol kezdjük a megfigyelést"); } #endregion } } }