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;
- namespace zh_gyakorlas
- {
- class Program
- {
- static int[] NapiKilometer;
- static int[] KilometerPerHet;
- static string[] Megjegyzesek;
- // ADATOK //
- /* Hétfő Kedd Szerda Csütörtök Péntek Szombat Vasárnap
- 5 – 15 km 8 – 18 km 10 – 20 km 8 – 18 km 10 – 20 km 5 – 15 km 30 – 40 km */
- //------- 1. FELADAT -------//
- // Egy 42 elemű tömbben tárolja el, hogy a vizsgált 6 hét melyik napján mekkora távot futott a maratonista. Tudjuk, hogy minden nap az adott hosszintervallumokon belül véletlenszerűen alakult a futás mennyisége. Azt persze tudjuk, hogy az utolsó vasárnapon 42 km-et teljesített a futónk.
- static void tomb_feltoltese_fiktiv_adatokkal()
- {
- Random veletlenszeru_szam = new Random();
- for (int i = 0; i < NapiKilometer.Length; i++)
- {
- // Döntsük el, hogy a hét melyik napja van
- switch ((i + 1) % 7) // Az aktuális elemhez hozzáadunk egyet, mert a tömb indexe 0-val kezdődik, majd megvizsgáljuk a 7-el történő osztás maradékát
- {
- case 1: // HÉTFŐ
- case 6: // SZOMBAT
- NapiKilometer[i] = veletlenszeru_szam.Next(5, 16);
- break;
- case 2: // KEDD
- case 4: // CSÜTÖRTÖK
- NapiKilometer[i] = veletlenszeru_szam.Next(10, 21);
- break;
- case 3: // SZERDA
- case 5: // PÉNTEK
- NapiKilometer[i] = veletlenszeru_szam.Next(8, 19);
- break;
- case 0: // VASÁRNAP
- NapiKilometer[i] = veletlenszeru_szam.Next(30, 41);
- break;
- }
- }
- // Miután feltöltöttük a tömb összes elemét, a verseny napját (utolsó vasárnap) módosítjuk 42-re!
- NapiKilometer[NapiKilometer.Length - 1] = 42;
- }
- //------- 2. FELADAT -------//
- // Egy 6 elemű tömbben tárolja el, hogy melyik héten összesen hány kilométert teljesített a futónk. Ennek a tömbnek az elemeit írja is ki a konzolra.
- static void hany_kilometert_tett_meg_egy_adott_heten()
- {
- int aktualis_het = 0; // Az aktuális hetet, amit vizsgálunk, lenullázzuk
- for (int i = 0; i < NapiKilometer.Length; i++)
- {
- KilometerPerHet[aktualis_het] += NapiKilometer[i]; // Az aktuális héthez hozzáadjuk az ahhoz a héthez tartozó napokon megtett kilómétereket
- if (((i + 1) % 7) == 0) // Ha eltelt egy hét, akkor az aktuális hetet megnöveljük 1-el
- {
- aktualis_het++;
- }
- }
- // Kiíratjuk az összesítést
- for (int i = 0; i < KilometerPerHet.Length; i++)
- {
- Console.WriteLine("A(z) " + (i+1) + ". héten " + KilometerPerHet[i] + " kilómétert tett meg!");
- }
- }
- //------- 3. FELADAT -------//
- // Döntse el, hogy a heti lefutott kilométer adagok folyamatosan növekedtek-e.
- static bool folyamatosan_novekedett_e()
- {
- // Tehát a kérdés, hogy folyamatosan növekedett-e a heti lefutott kilóméter. Amennyiben nem, felesleges tovább vizsgálni!
- int i = 0;
- while ((i < (KilometerPerHet.Length - 1)) && (KilometerPerHet[i] < KilometerPerHet[i + 1])) { i++; } // Ha kisebb az aktuális elem, mint a következő, tovább haladunk
- return (i == (KilometerPerHet.Length - 1)); // Amennyiben minden elem kisebb volt, az i értéke megegyezik az utolsó elem indexével
- }
- // Kiíratjuk a választ
- static void folyamatosan_novekedett_e_kiiras()
- {
- Console.Write("Minden héten többet futott? -> ");
- Console.Write(folyamatosan_novekedett_e() ? "Igen!\n" : "Nem!\n");
- }
- //------- 4. FELADAT -------//
- // Határozza meg, hogy versenyzőnk melyik napon teljesítette a legrövidebb távot.
- static int legrovidebb_tav()
- {
- int legrovidebb_tavu_nap = 0; // Ebben a változóban tároljuk az eddigi legrövidebb távú nap INDEXÉT
- int aktualis_nap = 0; // Ebben a változóban tároljuk az éppen vizsgált nap INDEXÉT
- while (aktualis_nap < NapiKilometer.Length)
- {
- if (NapiKilometer[aktualis_nap] < NapiKilometer[legrovidebb_tavu_nap])
- {
- legrovidebb_tavu_nap = aktualis_nap; // Amennyiben az aktuális napon rövidebb távot tett meg, mint az eddigi legrövidebb távú nap, az aktuális nap lesz a legrövidebb távú nap
- }
- aktualis_nap++;
- }
- return legrovidebb_tavu_nap; // CSAK AZ INDEXEL TÉR VISSZA!!
- }
- // Kiíratjuk a napot
- static void legrovidebb_tavu_nap_kiiras()
- {
- Console.WriteLine("A " + (legrovidebb_tav() + 1) + ". napon teljesítette a legrövidebb távot!"); // Mivel az indexelés 0-tól kezdődik, így a nap sorszámát akkor kapjuk meg, ha hozzáadunk egyet
- }
- //------- 5. FELADAT -------//
- // Tegye lehetővé, hogy a program felhasználója az egyes napokhoz megjegyzéseket is fűzzön. (Pl. „verseny”, „terep”, „laza”, „fartlek”, „résztáv”, stb.) Egy naphoz több megjegyzés is hozzáfűzhető, ebben az esetben a megjegyzések egymástól vesszővel és szóközzel vannak elválasztva (pl. „terep, fartlek”). (A program kérdezze meg, hogy hány futáshoz akarunk megjegyzést fűzni, majd kérdezze meg az adott edzés sorszámát és a hozzáfűzendő megjegyzést. A program figyeljen arra, hogy a megjegyzés a megfelelő formátumban legyen megadva.)
- static void megjegyzesek_a_futashoz()
- {
- Console.Write("Hány megjegyzést akar tenni? (0-" + NapiKilometer.Length + "): ");
- int megjegyzesek_szama = 0; // Itt tároljuk, hogy a felhasználó, hány bejegyzéshez szeretne hozzászólni
- while ((megjegyzesek_szama <= 0) || (megjegyzesek_szama > NapiKilometer.Length)) // Amíg nem elfogadható az érték, addig újra bekérjük
- {
- try // Számot kért-e be
- {
- megjegyzesek_szama = int.Parse(Console.ReadLine());
- }
- catch (Exception) // Ha nem, akkor beállítunk egy hibás értéket
- {
- megjegyzesek_szama = 0;
- }
- if ((megjegyzesek_szama <= 0) || (megjegyzesek_szama > NapiKilometer.Length)) // Erre azért van szükség, hogy a felhasználót értesíteni tudjuk a hibás értékadásról
- {
- Console.Write("Nem megfelelő értéket adott meg! (0-" + NapiKilometer.Length + "): ");
- }
- }
- // Amennyiben tudjuk, hogy hány megjegyzést szeretne tenni, kérjük be a sorszámot és a megjegyzést
- int nap_amihez_hozza_szeretne_szolni = 0; // Ez a változó tárolja, hogy éppen melyik naphoz szeretne hozzászólni a felhasználó. NEM INDEX!
- for (int i = 0; i < megjegyzesek_szama; i++)
- {
- Console.Write("Melyik naphoz szeretne hozzászólni? (0-" + NapiKilometer.Length + "): ");
- while ((nap_amihez_hozza_szeretne_szolni <= 0) || (nap_amihez_hozza_szeretne_szolni > NapiKilometer.Length)) // Amíg nem elfogadható az érték, addig újra bekérjük
- {
- try // Számot kért-e be
- {
- nap_amihez_hozza_szeretne_szolni = int.Parse(Console.ReadLine());
- }
- catch (Exception) // Ha nem, akkor beállítunk egy hibás értéket
- {
- nap_amihez_hozza_szeretne_szolni = 0;
- }
- if ((nap_amihez_hozza_szeretne_szolni <= 0) || (nap_amihez_hozza_szeretne_szolni > NapiKilometer.Length)) // Erre azért van szükség, hogy a felhasználót értesíteni tudjuk a hibás értékadásról
- {
- Console.Write("Nem megfelelő értéket adott meg! (0-" + NapiKilometer.Length + "): ");
- }
- }
- // Most már tudjuk a napot és azt is, hogy létezik ilyen eleme a tömbnek; bekérhetjük a megjegyzést
- bool tobb_megjegyzes = true; // Ha több megjegyzést akarna adni egy elemhez
- Console.Write(" -- A " + nap_amihez_hozza_szeretne_szolni + ". nap megjegyzése: ");
- Megjegyzesek[nap_amihez_hozza_szeretne_szolni - 1] = Convert.ToString(Console.ReadLine()); // Megadja a megjegyzést
- while (tobb_megjegyzes)
- {
- Console.Write(" -- Szeretne ehhez további megjegyzést tenni? (I/N): ");
- if (Convert.ToString(Console.ReadLine()).ToUpper() == "I") // Ha a válasz "I" akkor bekér az aktuális naphoz még megjegyzést
- {
- Console.Write(" -- További megjegyzés a " + nap_amihez_hozza_szeretne_szolni + ". naphoz: ");
- Megjegyzesek[nap_amihez_hozza_szeretne_szolni - 1] += ", " + Console.ReadLine(); // Hozzáfűzi ", " karakterekkel az előző értékhez
- }
- else
- {
- tobb_megjegyzes = false;
- }
- }
- nap_amihez_hozza_szeretne_szolni = 0; // Lenullázzuk a változót, így bekérhetjük a következő nap sorszámát
- }
- }
- //------- 6. FELADAT -------//
- // Írja ki a konzolra, hogy volt-e olyan nap, amikor a futó „résztáv”-os edzést végzett, amelynek hossza legalább 15 km volt. Ha volt ilyen nap, akkor annak sorszáma is kerüljön kiírásra.
- static void volt_e_15kmes_resztav()
- {
- int i = 0; bool talalt = false;
- while (i < NapiKilometer.Length && !talalt)
- {
- if (NapiKilometer[i] >= 15 && tartalmazza_e_a_kifejezest(Megjegyzesek[i], "résztáv"))
- {
- talalt = true;
- }
- i++;
- }
- // Kiírja a találatot
- Console.WriteLine(talalt ? "Igen, a " + i + ". nap!" : "Nem talált!");
- }
- static bool tartalmazza_e_a_kifejezest(string vizsgalando, string kifejezes)
- {
- if (vizsgalando != null) // Erre azért van szükség, mert a tömb "üres" elemei null értéket kapnak, így a Contains elszáll
- {
- return vizsgalando.Contains(kifejezes); // Ha tartalmazza, igaz értékkel tér vissza
- }
- else
- {
- return false;
- }
- }
- //------- FŐ METÓDUS -------//
- static void Main(string[] args)
- {
- NapiKilometer = new int[42];
- KilometerPerHet = new int[6];
- Megjegyzesek = new string[42];
- Console.WriteLine("***************** 1. FELADAT *****************");
- tomb_feltoltese_fiktiv_adatokkal();
- Console.WriteLine("Adatok felvétele megtörtént!");
- Console.WriteLine("\n***************** 2. FELADAT *****************");
- hany_kilometert_tett_meg_egy_adott_heten();
- Console.WriteLine("\n***************** 3. FELADAT *****************");
- folyamatosan_novekedett_e_kiiras();
- Console.WriteLine("\n***************** 4. FELADAT *****************");
- legrovidebb_tavu_nap_kiiras();
- Console.WriteLine("\n***************** 5. FELADAT *****************");
- megjegyzesek_a_futashoz();
- Console.WriteLine("\n***************** 6. FELADAT *****************");
- volt_e_15kmes_resztav();
- Console.ReadKey();
- }
- }
- }
Add Comment
Please, Sign In to add comment