Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.02 KB | None | 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.  
  8. /*
  9. Egy triatlonklub sportolói számára a vezetőedző egy adott hétre vonatkozó
  10. edzésmennyiségeket egy szöveges fájlban küldi el, melyre egy példa a következő:
  11.  *
  12. @Kiss_József#Futás!Szerda:14
  13. @Nagy_Imre#Úszás!Kedd:12
  14. @Kiss_József#Úszás!Kedd
  15.  *
  16. Mint az a példából is látható egy sorban egy sportoló adott napi edzésére vonatkozó előírás
  17. található. A sportoló neve előtt a @ karakter látható és a versenyző nevében a szóköz helyett
  18. _ szerepel. A sportág előtt a # található, a nap előtt a !, a táv előtt pedig a :. A név mindig
  19. egy adat elején van, majd ezt követi a sportág, a nap és a táv.
  20.  
  21.  * Lehetséges, hogy a távot nem adta meg az edző, ilyenkor ez a táv véletlenszerűen 5 és 10 közötti egész érték. Az
  22. biztos, hogy a vezetőedző helyes formátumot használ, így ezt nem kell ellenőrizni.
  23. Írjon programot, amely fel tudja dolgozni a vezetőedzőtől érkező üzeneteket, illetve a
  24. feldolgozott üzenetek alapján információkat tud szolgáltatni az egyes sportolók heti
  25. edzésmennyiségéről. A program az alábbiakat valósítsa meg!
  26.  *
  27. 1. A fájl tartalmát listázza ki a képernyőre az alábbi formátumban:
  28. Név: Kiss József; sportág: futás; nap: szerda; táv: 14 km
  29.  *
  30. 2. Ha olyan edzésadatokat talál, ahol nem lett megadva a táv, akkor generálja le a
  31. megfelelő véletlen távot. Hozzon létre egy fájlt, melyben az eredeti adatokon túl az
  32. esetleges újonnan generált távok is megtalálhatók. A fájl neve az eredeti fájlnév
  33. kiegészítése legyen a "_new" szöveggel. (Pl. "edzes.txt" eredeti fájlnév esetén
  34. a módosított fájl neve "edzes_new.txt")
  35.  *
  36. 3. Határozza meg, hogy egy felhasználó által kiválasztott sportoló fog-e futni az adott
  37. héten!
  38.  *
  39. 4. Határozza meg, hogy egy felhasználó által kiválasztott sportoló hány kilométert fog
  40. leúszni a héten!
  41.  *
  42. 5. Adja meg, hogy mennyi a triatlonklub összes tagja által kerékpáron teljesítendő táv a
  43. héten!
  44.  *
  45. 6. Határozza meg, hogy melyik versenyzők fognak a héten legalább háromszor edzeni!
  46.  *
  47. 7. Határozza meg, hogy melyik napon fogja valamely versenyző a leghosszabb
  48. futóedzést teljesíteni!*/
  49.  
  50.  
  51. namespace mintazh
  52. {
  53.     class Program
  54.     {
  55.        // static int i = 0;
  56.         //static string fajlnev = "edzes";
  57.  
  58.         //sorokat számolja meg egy fájlban
  59.         static int getlength(string fn)
  60.         {
  61.             int x = 0;
  62.             fn += ".txt";
  63.             StreamReader sr = new StreamReader(fn);
  64.             while (!sr.EndOfStream)
  65.             {
  66.                 x++;
  67.                 sr.ReadLine();
  68.  
  69.             }
  70.             return x;
  71.         }
  72.  
  73.         //beolvas egy fájlból és különböző megfelelő tömbökben eltárolja a beolvasott fileokat
  74.         static void beolvas(string fn, string[] nev, string[] sport, string[] nap, int[] tav)
  75.         {
  76.             fn += ".txt";
  77.             StreamReader sr = new StreamReader(fn);
  78.             int i = 0;
  79.             while (!sr.EndOfStream)
  80.             {
  81.                 string s = sr.ReadLine();
  82.                
  83.                 if (!s.Contains(':'))
  84.                 {
  85.                     Random r = new Random();
  86.                     s += ":";
  87.                     string y = r.Next(5, 13).ToString();
  88.                     s += y;
  89.  
  90.                 }
  91.                 init(s, nev, sport, nap, tav,i);
  92.                 i++;
  93.             }
  94.             sr.Close();
  95.         }
  96.        
  97.         //a beolvasott sort egyből feldarabolja a megfelelő karakterekig, és elrakja egy tömbbe
  98.         //ezután a változóival visszatér a paraméterben
  99.         static void init(string s, string[] nev, string[] sport, string[] nap, int[] tav, int i)
  100.         {
  101.             nev[i] = s.Substring(1,s.IndexOf('#')-1);
  102.             sport[i] = s.Substring(s.IndexOf('#')+1, s.IndexOf('!') -1 - s.IndexOf('#'));
  103.             nap[i] = s.Substring(s.IndexOf('!')+1, s.IndexOf(':') -1 - s.IndexOf('!'));
  104.             tav[i] = int.Parse(s.Substring(s.IndexOf(':')+1));
  105.  
  106.         }
  107.  
  108.         //kicseréli a név tömbben minden _ karaktert space-re
  109.         static void cserel(string[] nev)
  110.         {
  111.             for (int j = 0; j < nev.Length; j++)
  112.             {
  113.                 nev[j] = nev[j].Replace('_', ' ');
  114.             }
  115.         }
  116.  
  117.         static void visszacserel(string[] nev)
  118.         {
  119.             for (int j = 0; j < nev.Length; j++)
  120.             {
  121.                 nev[j] = nev[j].Replace(' ', '_');
  122.             }
  123.         }
  124.  
  125.  
  126.         //sima kiíratás
  127.         static void kiir(string[] nev, string[] sport, string[] nap, int[] tav)
  128.         {
  129.             for (int j = 0; j < nev.Length; j++)
  130.             {
  131.                 Console.WriteLine("Név: {0}; Sport: {1}; Nap: {2}; Táv: {3}",nev[j], sport[j], nap[j], tav[j]);
  132.             }
  133.         }
  134.  
  135.         static void fajlbair(string[] nev, string[] sport, string[] nap, int[] tav, string fajlnev)
  136.         {
  137.             fajlnev += "_new.txt";
  138.             StreamWriter sw = new StreamWriter(fajlnev);
  139.             string[] nevcserel = nev;
  140.             visszacserel(nevcserel);
  141.             for (int j = 0; j < nev.Length; j++)
  142.             {
  143.                 //@Kiss_József#Futás!Szerda:14
  144.                 sw.WriteLine("@{0}#{1}!{2}:{3}", nevcserel[j], sport[j], nap[j], tav[j]);
  145.             }
  146.             sw.Close();
  147.  
  148.         }
  149.         /* 3. Határozza meg, hogy egy felhasználó által kiválasztott sportoló fog-e futni az adott
  150.          * héten!
  151.          * */
  152.  
  153.         static void fogefutni(string keres, string[] nev, string[] sport)
  154.         {
  155.             bool fut = false;
  156.             for (int j = 0; j < nev.Length; j++)
  157.             {
  158.                 if (keres == nev[j] && sport[j] == "Futás")
  159.                 {
  160.                    
  161.                     fut = true;
  162.                 }
  163.             }
  164.             if (!fut)
  165.                 Console.WriteLine("A keresett sportoló nem fog futni a héten");
  166.             else
  167.                 Console.WriteLine("A keresett sportoló fog futni a héten");
  168.  
  169.         }
  170.  
  171.  
  172.         /*4. Határozza meg, hogy egy felhasználó által kiválasztott sportoló hány kilométert fog
  173.           leúszni a héten!*/
  174.         static int mennyituszik(string[] nev, string[] sport, int[] tav)
  175.         {
  176.             int sum = 0;
  177.             Console.WriteLine("Kérlek add meg a sportoló nevét, akire kíváncsi vagy, hogy mennyit úszik!");
  178.             string s = Console.ReadLine();
  179.             for (int j = 0; j < nev.Length; j++)
  180.             {
  181.                 if (sport[j] == "Úszás")
  182.                     if (s == nev[j])
  183.                     sum += tav[j];
  184.             }
  185.             //Console.WriteLine("\n{0} nevű sportoló a héten {1} km-t fog úszni",s,sum);
  186.             return sum;
  187.         }
  188.  
  189.         /* 5. Adja meg, hogy mennyi a triatlonklub összes tagja által kerékpáron teljesítendő táv a
  190.            héten!  */
  191.  
  192.         static int osszeskerekpar(string[] sport, int[] tav)
  193.         {
  194.             int sum = 0;
  195.             for (int j = 0; j < sport.Length; j++)
  196.             {
  197.                 if (sport[j] == "Kerékpár")
  198.                     sum += tav[j];
  199.             }
  200.            
  201.             return sum;
  202.         }
  203.  
  204.         //6. Határozza meg, hogy melyik versenyzők fognak a héten legalább háromszor edzeni!
  205.  
  206.         static void haromszor(string[] nev)
  207.         {
  208.             string s = "", nevek = "";
  209.             for (int j = 0; j < nev.Length; j++)
  210.             {
  211.                 s = nev[j];
  212.                 for (int k = j+1; k < nev.Length; k++)
  213.                 {
  214.                     if (nev[k] == s && !nevek.Contains(s)) nevek += s ;
  215.                 }
  216.                 nevek += ":";
  217.             }
  218.             nevek = nevek.Remove(nevek.Length - 1);
  219.             string[] nevek1 = nevek.Split(':');
  220.             Console.WriteLine("\nA sportolók akik a héten legalább háromszor fognak edzeni:");
  221.             int x = 0;
  222.             for (int j = 0; j < nevek1.Length; j++)
  223.             {
  224.                 for (int k = 0; k < nevek1.Length; k++)
  225.                 {
  226.                     if (nevek1[j] == nev[k])
  227.                         x++;
  228.                 }
  229.                 if (x > 2) Console.WriteLine(nevek1[j]);
  230.                 x = 0;
  231.             }
  232.         }
  233.  
  234.         /*7. Határozza meg, hogy melyik napon fogja valamely versenyző a leghosszabb
  235. futóedzést teljesíteni!*/
  236.  
  237.         static void legtobbfutas(string[] nev, string[] nap, string[] sport, int[] tav)
  238.         {
  239.             int max = 0, maxi = 0;
  240.             for (int i = 0; i < nev.Length; i++)
  241.             {
  242.                 if(sport[i]=="Futás")
  243.                     if (max < tav[i])
  244.                     {
  245.                         max = tav[i];
  246.                         maxi = i;
  247.                     }
  248.             }
  249.             Console.WriteLine("A leghosszabb futóedzést {0} fogja teljesíteni, {1}i napon, {2} km hosszan",nev[maxi],nap[maxi],tav[maxi]);        
  250.         }
  251.  
  252.         static void Main(string[] args)
  253.         {
  254.             int n = getlength("edzes");
  255.             string[] nev = new string[n];
  256.             string[] sport = new string[n];
  257.             string[] nap = new string[n];
  258.             int[] tav = new int[n];
  259.  
  260.             beolvas("edzes", nev, sport, nap, tav);
  261.             cserel(nev);
  262.             kiir(nev, sport, nap, tav);
  263.             fajlbair(nev, sport, nap, tav, "edzes");
  264.             cserel(nev);
  265.             Console.WriteLine();
  266.             fogefutni("Dinya Péter", nev, sport);
  267.             Console.WriteLine("\nAz előbb megadott sportoló a héten ennyit úszik: {0}\n",mennyituszik(nev, sport, tav));
  268.             Console.WriteLine("A sportolók által a héten kerékpáron megtett táv: {0}\n", osszeskerekpar(sport,tav));
  269.             haromszor(nev);
  270.             Console.WriteLine(); ;
  271.             legtobbfutas(nev, nap, sport, tav);
  272.             Console.ReadLine();
  273.         }
  274.     }
  275. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement