Advertisement
Levi0227

Szakaszsebesség-ellenőrzés-2020 május (idegen)

Apr 5th, 2023 (edited)
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.28 KB | Source Code | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7. using System.Globalization;
  8.  
  9. namespace ellenorzes
  10. {
  11.     class ellenorzes
  12.     {
  13.         static List<string> jarmuadatok = new List<string>();
  14.         static int mertszakasz = 10;
  15.  
  16.         static List<string> beolvas(string fajlnev)
  17.         {
  18.             List<string> adatok = new List<string>(File.ReadAllLines(fajlnev));
  19.             return adatok;
  20.         }
  21.  
  22.         static int ForgalomNagysag()
  23.         {
  24.             int forgnagysag = jarmuadatok.Count;
  25.             int db = 0;
  26.             for (int i = forgnagysag-1; i >=0; i--)
  27.             {
  28.                 if (jarmuadatok[i].Split(' ')[5] == "9")
  29.                 {
  30.                     db++;
  31.                 }
  32.             }
  33.             return forgnagysag - db;
  34.         }
  35.  
  36.         static int AthaladKezdetiPonton(int ora, int perc)
  37.         {
  38.             int db = 0;
  39.             for (int i = 0; i < jarmuadatok.Count; i++)
  40.             {
  41.                 if (Convert.ToInt32(jarmuadatok[i].Split(' ')[1]) == ora && Convert.ToInt32(jarmuadatok[i].Split(' ')[2]) == perc)
  42.                 {
  43.                     db++;
  44.                 }
  45.             }
  46.             return db;
  47.         }
  48.  
  49.         static double Atlagsebesseg(DateTime ido, int ut)
  50.         {
  51.             double t = (ido.Hour * 3600 + ido.Minute * 60 + ido.Second + (double)ido.Millisecond / 1000);
  52.             return ((double)ut*1000 / t)*3.6;
  53.         }
  54.  
  55.         static DateTime ElteltIdo(int sorszam)
  56.         {
  57.             return new Date
  58.             Time() + IdostringToDateTime(jarmuadatok[sorszam], 1).Subtract(IdostringToDateTime(jarmuadatok[sorszam], 0));
  59.         }
  60.  
  61.         static double ForgalomSuruseg(string oraperc)
  62.         {
  63.             int db = 0;
  64.             for (int i = 0; i < jarmuadatok.Count; i++)
  65.             {
  66.                 int belepperc = Convert.ToInt32(jarmuadatok[i].Split(' ')[1]) * 3600 + Convert.ToInt32(jarmuadatok[i].Split(' ')[2])*60;
  67.                 int kilepperc = Convert.ToInt32(jarmuadatok[i].Split(' ')[5]) * 3600 + Convert.ToInt32(jarmuadatok[i].Split(' ')[6])*60;
  68.                 int idopont = Convert.ToInt32(oraperc.Split(' ')[0]) * 3600 + Convert.ToInt32(oraperc.Split(' ')[1])*60;
  69.                 if (belepperc<=idopont && idopont<=kilepperc)
  70.                 {
  71.                     db++;
  72.                 }
  73.             }
  74.             return (double)db/ 10;
  75.         }
  76.  
  77.         static DateTime IdostringToDateTime(string adatsor, int melyik)
  78.         {
  79.             int i = 0;
  80.             if (melyik == 1) i = 4;
  81.             string idostring = adatsor.Split(' ')[i+1] + ":" +
  82.                          adatsor.Split(' ')[i+2] + ":" +
  83.                          adatsor.Split(' ')[i+3] + "." +
  84.                          adatsor.Split(' ')[i+4];
  85.             DateTime ido = Convert.ToDateTime(idostring);
  86.             return ido;
  87.         }
  88.  
  89.         static int MaxSebesseg()
  90.         {
  91.             int max = 0;
  92.             double maxertek = Atlagsebesseg(ElteltIdo(max), mertszakasz);
  93.             for (int i = 1; i < jarmuadatok.Count; i++)
  94.             {
  95.                 if (maxertek < Atlagsebesseg(ElteltIdo(i), mertszakasz))
  96.                 {
  97.                     max = i;
  98.                     maxertek = Atlagsebesseg(ElteltIdo(max), mertszakasz);
  99.                 }
  100.             }
  101.             return max;
  102.         }
  103.  
  104.         static int ElozesekSzama(int sorszam)
  105.         {
  106.             int elozes = 0;
  107.             for (int i = sorszam - 1; i >= 0; i--)
  108.             {
  109.                 if (IdostringToDateTime(jarmuadatok[sorszam], 1) <= IdostringToDateTime(jarmuadatok[i], 1))
  110.                 {
  111.                     elozes++;
  112.                 }
  113.             }
  114.             return elozes;
  115.         }
  116.  
  117.         static double GyorshajtokSzazalek()
  118.         {
  119.             int db = 0;
  120.             for (int i = 0; i < jarmuadatok.Count; i++)
  121.             {
  122.                 if (90 < Atlagsebesseg(ElteltIdo(i), mertszakasz))
  123.                 {
  124.                     db++;                    
  125.                 }
  126.             }
  127.             return (double)db / jarmuadatok.Count;
  128.         }
  129.         static int BuntetesErteke(double sebesseg)
  130.         {
  131.             int buntetes = 0;
  132.             if (sebesseg >= 104 && sebesseg < 121) buntetes = 30000;
  133.             if (sebesseg >= 121 && sebesseg < 136) buntetes = 45000;
  134.             if (sebesseg >= 136 && sebesseg < 151) buntetes = 60000;
  135.             if (sebesseg >= 151) buntetes = 200000;
  136.             return buntetes;
  137.         }
  138.  
  139.  
  140.         static void Main(string[] args)
  141.         {
  142.             // 1. feladat
  143.             jarmuadatok = beolvas("meresek.txt");
  144.  
  145.             //2. feladat
  146.             Console.WriteLine("2. feladat");
  147.             Console.WriteLine("A mérés során {0} jármű adatait rögzítették.", jarmuadatok.Count);
  148.             Console.WriteLine();
  149.            
  150.             //3. feladat
  151.             Console.WriteLine("3. feladat");
  152.             Console.WriteLine("9 óra előtt {0} jármű haladt el a végponti mérőnél.", ForgalomNagysag());
  153.             Console.WriteLine();
  154.            
  155.             //4. feladat
  156.             Console.WriteLine("4. feladat");
  157.             Console.Write("Adjon meg egy óra és perc értéket! ");
  158.             string oraperc = Console.ReadLine();
  159.             int ora = Convert.ToInt32(oraperc.Split(' ')[0]);
  160.             int perc = Convert.ToInt32(oraperc.Split(' ')[1]);
  161.             int athaladtakdb = AthaladKezdetiPonton(ora, perc);
  162.             Console.WriteLine("\ta. A kezdeti méréspontnál elhaladt járművek száma: {0} ", athaladtakdb.ToString());
  163.             Console.WriteLine("\tb. A forgalomsűrűség: {0}", ForgalomSuruseg(oraperc).ToString("F1"));
  164.             Console.WriteLine();
  165.  
  166.             //5. feladat
  167.             Console.WriteLine("5. feladat");
  168.             int max = MaxSebesseg();
  169.             double maxv = Atlagsebesseg(ElteltIdo(max), mertszakasz);
  170.             int elozesdb = ElozesekSzama(max);
  171.             Console.WriteLine("A legnagyobb sebességgel haladó jármű \r\n" +
  172.                                   "\trendszáma: {0} \r\n" +
  173.                                   "\tátlagsebessége: {1} km/h \r\n" +
  174.                                   "\táltal lehagyott járművek száma: {2}", jarmuadatok[max].Split(' ')[0], ((int)maxv).ToString(), elozesdb.ToString());
  175.             Console.WriteLine();
  176.  
  177.             //6. feladat
  178.             Console.WriteLine("6. feladat");
  179.             Console.WriteLine("A járművek {0}-a volt gyorshajtó.", GyorshajtokSzazalek().ToString("P"));
  180.             Console.WriteLine();
  181.  
  182.             //7. feladat
  183.             FileStream fs = new FileStream("buntetes.txt", FileMode.Create);
  184.             StreamWriter sw = new StreamWriter(fs);
  185.             for (int i = 0; i < jarmuadatok.Count; i++)
  186.             {
  187.                 double v = Atlagsebesseg(ElteltIdo(i), mertszakasz);
  188.                 if (104 <= v)
  189.                 {
  190.                     sw.WriteLine("{0}\t{1} km/h\t{2} Ft", jarmuadatok[i].Split(' ')[0], ((int)v).ToString(), BuntetesErteke(v));
  191.                 }
  192.              }
  193.             sw.Close();
  194.             fs.Close();
  195.            
  196.             Console.WriteLine("A fájl elkészült.");
  197.             Console.ReadLine();
  198.         }
  199.     }
  200. }
  201.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement