Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- /*
- Egy triatlonklub sportolói számára a vezetőedző egy adott hétre vonatkozó
- edzésmennyiségeket egy szöveges fájlban küldi el, melyre egy példa a következő:
- *
- @Kiss_József#Futás!Szerda:14
- @Nagy_Imre#Úszás!Kedd:12
- @Kiss_József#Úszás!Kedd
- *
- Mint az a példából is látható egy sorban egy sportoló adott napi edzésére vonatkozó előírás
- található. A sportoló neve előtt a @ karakter látható és a versenyző nevében a szóköz helyett
- _ 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
- egy adat elején van, majd ezt követi a sportág, a nap és a táv.
- * 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
- biztos, hogy a vezetőedző helyes formátumot használ, így ezt nem kell ellenőrizni.
- Írjon programot, amely fel tudja dolgozni a vezetőedzőtől érkező üzeneteket, illetve a
- feldolgozott üzenetek alapján információkat tud szolgáltatni az egyes sportolók heti
- edzésmennyiségéről. A program az alábbiakat valósítsa meg!
- *
- 1. A fájl tartalmát listázza ki a képernyőre az alábbi formátumban:
- Név: Kiss József; sportág: futás; nap: szerda; táv: 14 km
- *
- 2. Ha olyan edzésadatokat talál, ahol nem lett megadva a táv, akkor generálja le a
- megfelelő véletlen távot. Hozzon létre egy fájlt, melyben az eredeti adatokon túl az
- esetleges újonnan generált távok is megtalálhatók. A fájl neve az eredeti fájlnév
- kiegészítése legyen a "_new" szöveggel. (Pl. "edzes.txt" eredeti fájlnév esetén
- a módosított fájl neve "edzes_new.txt")
- *
- 3. Határozza meg, hogy egy felhasználó által kiválasztott sportoló fog-e futni az adott
- héten!
- *
- 4. Határozza meg, hogy egy felhasználó által kiválasztott sportoló hány kilométert fog
- leúszni a héten!
- *
- 5. Adja meg, hogy mennyi a triatlonklub összes tagja által kerékpáron teljesítendő táv a
- héten!
- *
- 6. Határozza meg, hogy melyik versenyzők fognak a héten legalább háromszor edzeni!
- *
- 7. Határozza meg, hogy melyik napon fogja valamely versenyző a leghosszabb
- futóedzést teljesíteni!*/
- namespace mintazh
- {
- class Program
- {
- // static int i = 0;
- //static string fajlnev = "edzes";
- //sorokat számolja meg egy fájlban
- static int getlength(string fn)
- {
- int x = 0;
- fn += ".txt";
- StreamReader sr = new StreamReader(fn);
- while (!sr.EndOfStream)
- {
- x++;
- sr.ReadLine();
- }
- return x;
- }
- //beolvas egy fájlból és különböző megfelelő tömbökben eltárolja a beolvasott fileokat
- static void beolvas(string fn, string[] nev, string[] sport, string[] nap, int[] tav)
- {
- fn += ".txt";
- StreamReader sr = new StreamReader(fn);
- int i = 0;
- while (!sr.EndOfStream)
- {
- string s = sr.ReadLine();
- if (!s.Contains(':'))
- {
- Random r = new Random();
- s += ":";
- string y = r.Next(5, 13).ToString();
- s += y;
- }
- init(s, nev, sport, nap, tav,i);
- i++;
- }
- sr.Close();
- }
- //a beolvasott sort egyből feldarabolja a megfelelő karakterekig, és elrakja egy tömbbe
- //ezután a változóival visszatér a paraméterben
- static void init(string s, string[] nev, string[] sport, string[] nap, int[] tav, int i)
- {
- nev[i] = s.Substring(1,s.IndexOf('#')-1);
- sport[i] = s.Substring(s.IndexOf('#')+1, s.IndexOf('!') -1 - s.IndexOf('#'));
- nap[i] = s.Substring(s.IndexOf('!')+1, s.IndexOf(':') -1 - s.IndexOf('!'));
- tav[i] = int.Parse(s.Substring(s.IndexOf(':')+1));
- }
- //kicseréli a név tömbben minden _ karaktert space-re
- static void cserel(string[] nev)
- {
- for (int j = 0; j < nev.Length; j++)
- {
- nev[j] = nev[j].Replace('_', ' ');
- }
- }
- static void visszacserel(string[] nev)
- {
- for (int j = 0; j < nev.Length; j++)
- {
- nev[j] = nev[j].Replace(' ', '_');
- }
- }
- //sima kiíratás
- static void kiir(string[] nev, string[] sport, string[] nap, int[] tav)
- {
- for (int j = 0; j < nev.Length; j++)
- {
- Console.WriteLine("Név: {0}; Sport: {1}; Nap: {2}; Táv: {3}",nev[j], sport[j], nap[j], tav[j]);
- }
- }
- static void fajlbair(string[] nev, string[] sport, string[] nap, int[] tav, string fajlnev)
- {
- fajlnev += "_new.txt";
- StreamWriter sw = new StreamWriter(fajlnev);
- string[] nevcserel = nev;
- visszacserel(nevcserel);
- for (int j = 0; j < nev.Length; j++)
- {
- //@Kiss_József#Futás!Szerda:14
- sw.WriteLine("@{0}#{1}!{2}:{3}", nevcserel[j], sport[j], nap[j], tav[j]);
- }
- sw.Close();
- }
- /* 3. Határozza meg, hogy egy felhasználó által kiválasztott sportoló fog-e futni az adott
- * héten!
- * */
- static void fogefutni(string keres, string[] nev, string[] sport)
- {
- bool fut = false;
- for (int j = 0; j < nev.Length; j++)
- {
- if (keres == nev[j] && sport[j] == "Futás")
- {
- fut = true;
- }
- }
- if (!fut)
- Console.WriteLine("A keresett sportoló nem fog futni a héten");
- else
- Console.WriteLine("A keresett sportoló fog futni a héten");
- }
- /*4. Határozza meg, hogy egy felhasználó által kiválasztott sportoló hány kilométert fog
- leúszni a héten!*/
- static int mennyituszik(string[] nev, string[] sport, int[] tav)
- {
- int sum = 0;
- Console.WriteLine("Kérlek add meg a sportoló nevét, akire kíváncsi vagy, hogy mennyit úszik!");
- string s = Console.ReadLine();
- for (int j = 0; j < nev.Length; j++)
- {
- if (sport[j] == "Úszás")
- if (s == nev[j])
- sum += tav[j];
- }
- //Console.WriteLine("\n{0} nevű sportoló a héten {1} km-t fog úszni",s,sum);
- return sum;
- }
- /* 5. Adja meg, hogy mennyi a triatlonklub összes tagja által kerékpáron teljesítendő táv a
- héten! */
- static int osszeskerekpar(string[] sport, int[] tav)
- {
- int sum = 0;
- for (int j = 0; j < sport.Length; j++)
- {
- if (sport[j] == "Kerékpár")
- sum += tav[j];
- }
- return sum;
- }
- //6. Határozza meg, hogy melyik versenyzők fognak a héten legalább háromszor edzeni!
- static void haromszor(string[] nev)
- {
- string s = "", nevek = "";
- for (int j = 0; j < nev.Length; j++)
- {
- s = nev[j];
- for (int k = j+1; k < nev.Length; k++)
- {
- if (nev[k] == s && !nevek.Contains(s)) nevek += s ;
- }
- nevek += ":";
- }
- nevek = nevek.Remove(nevek.Length - 1);
- string[] nevek1 = nevek.Split(':');
- Console.WriteLine("\nA sportolók akik a héten legalább háromszor fognak edzeni:");
- int x = 0;
- for (int j = 0; j < nevek1.Length; j++)
- {
- for (int k = 0; k < nevek1.Length; k++)
- {
- if (nevek1[j] == nev[k])
- x++;
- }
- if (x > 2) Console.WriteLine(nevek1[j]);
- x = 0;
- }
- }
- /*7. Határozza meg, hogy melyik napon fogja valamely versenyző a leghosszabb
- futóedzést teljesíteni!*/
- static void legtobbfutas(string[] nev, string[] nap, string[] sport, int[] tav)
- {
- int max = 0, maxi = 0;
- for (int i = 0; i < nev.Length; i++)
- {
- if(sport[i]=="Futás")
- if (max < tav[i])
- {
- max = tav[i];
- maxi = i;
- }
- }
- Console.WriteLine("A leghosszabb futóedzést {0} fogja teljesíteni, {1}i napon, {2} km hosszan",nev[maxi],nap[maxi],tav[maxi]);
- }
- static void Main(string[] args)
- {
- int n = getlength("edzes");
- string[] nev = new string[n];
- string[] sport = new string[n];
- string[] nap = new string[n];
- int[] tav = new int[n];
- beolvas("edzes", nev, sport, nap, tav);
- cserel(nev);
- kiir(nev, sport, nap, tav);
- fajlbair(nev, sport, nap, tav, "edzes");
- cserel(nev);
- Console.WriteLine();
- fogefutni("Dinya Péter", nev, sport);
- Console.WriteLine("\nAz előbb megadott sportoló a héten ennyit úszik: {0}\n",mennyituszik(nev, sport, tav));
- Console.WriteLine("A sportolók által a héten kerékpáron megtett táv: {0}\n", osszeskerekpar(sport,tav));
- haromszor(nev);
- Console.WriteLine(); ;
- legtobbfutas(nev, nap, sport, tav);
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement