2021.03.10./1. Ultrabalaton struktúrás megoldás

Ma egy videót kell megnéznetek s megoldani vele párhuzamosan a feladatot.

A videót a tavalyiaknak csináltam, ezt vegyétek figyelembe. Azért adom közre, hogy aki az OOP miatt

nem akart programozás feladatot megoldani, az lásson egy nem OOP-s megoldást, ami pontot ér.

Vigyázz, nem kaphatsz rá max. pontot!


Ez egy nem objektum-orientált, ezáltal könnyebben érthető, struktúrás megoldás.

A struktúrás megoldás a videóban elhangzottakkal ellentétben nem ér teljes pontot 2021-ben,

illetve tudni kell, hogy nektek lesznek kifejezetten oop-s feladatok is benne.

Ezen felül pedig rövidebb lesz a feladatsor, és a második fele grafikus programozás lesz.


using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ultrabalaton
{
    class Program
    {
        public struct ultrabalaton
        {
            public string versenyzo;
            public int rajtszam;
            public string kategoria;
            public string versenyido;
            public int tavszazalek;
        }

        static List<ultrabalaton> lista = new List<ultrabalaton>();

        static void kettes()
        {
            Console.WriteLine("Beolvasás...");
            StreamReader sr = new StreamReader("ub2017egyeni.txt");
            string[] atmeneti;
            sr.ReadLine();
            while (!sr.EndOfStream)
            {
                atmeneti = sr.ReadLine().Split(';');
                ultrabalaton u = new ultrabalaton();
                u.versenyzo = atmeneti[0];
                u.rajtszam = Convert.ToInt32(atmeneti[1]);
                u.kategoria = atmeneti[2];
                u.versenyido =atmeneti[3];
                u.tavszazalek = Convert.ToInt32(atmeneti[4]);
                lista.Add(u);
            }
            sr.Close();

            //for (int i = 0; i < lista.Count; i++)
            //{
            //    Console.WriteLine("{0} {1} {2} {3} {4}", lista[i].versenyzo, lista[i].rajtszam, lista[i].kategoria, lista[i].versenyido, lista[i].tavszazalek);
            //}
        }

        static void harmas()
        {
            Console.WriteLine("\n3. feladat: Egyéni indulók: {0} fő",lista.Count);
        }

        static void negyes()
        {
            Console.WriteLine();
            int db = 0;
            for (int i = 0; i < lista.Count; i++)
            {
                if (lista[i].kategoria=="Noi" && lista[i].tavszazalek==100)
                {
                    db++;
                }
            }

            Console.WriteLine("4. feladat: Célba érkező női sportolók: {0} fő",db);
        }

        static void otos()
        {
            Console.WriteLine();
            Console.Write("5. feladat: Kérem a sportoló nevét: ");
            string bekert = Console.ReadLine();

            int i = 0;
            while (i<lista.Count && bekert != lista[i].versenyzo)
            {
                i++;
            }
            Console.Write("\tIndult egyéniben a sportoló? ");
            if (i == lista.Count)
                Console.WriteLine("Nem");
            else
            {
                Console.WriteLine("Igen");
                Console.Write("\tTeljesítette a teljes távot? ");
                if (lista[i].tavszazalek == 100)
                {
                    Console.WriteLine("Igen");
                }
                else
                {
                    Console.WriteLine("Nem");
                }
            }          
        }

        static double IdoOraban(string ido)
        {
            double i = 0;
            string[] tomb = ido.Split(':');
            i = i + double.Parse(tomb[0]);
            i = i + double.Parse(tomb[1])/60;
            i = i + double.Parse(tomb[2]) / 3600;
            return i;
        }

        static void hetes()
        {
            Console.WriteLine();
            int db = 0;
            double atlag = 0;
            for (int i = 0; i < lista.Count; i++)
            {
                if (lista[i].kategoria=="Ferfi" && lista[i].tavszazalek==100)
                {
                    atlag = IdoOraban(lista[i].versenyido) + atlag;
                    db++;
                }
            }

            Console.WriteLine("7. feladat: Átlagos idő: {0} óra",atlag/db);
        }

        static void nyolcas()
        {
            Console.WriteLine("8. feladat: Verseny győztesei");
            double gyoztesNoiIdo = double.MaxValue;
            double gyoztesFerfiIdo = double.MaxValue;
            string noiNev = String.Empty;
            int noiRajtsz = 0;
            string noiIdo = String.Empty;
            string ferfiNev = String.Empty;
            int ferfiRajtsz = 0;
            string ferfiIdo = String.Empty;
            foreach (var i in lista)
            {
                if (i.kategoria == "Noi" && i.tavszazalek == 100 && IdoOraban(i.versenyido) < gyoztesNoiIdo)
                {
                    gyoztesNoiIdo = IdoOraban(i.versenyido);
                    noiNev = i.versenyzo;
                    noiRajtsz = i.rajtszam;
                    noiIdo = i.versenyido;
                }
                else
                {
                    if (i.kategoria == "Ferfi" && i.tavszazalek == 100 && IdoOraban(i.versenyido) < gyoztesFerfiIdo)
                    {
                        gyoztesFerfiIdo = IdoOraban(i.versenyido);
                        ferfiNev = i.versenyzo;
                        ferfiRajtsz = i.rajtszam;
                        ferfiIdo = i.versenyido;
                    }
                }
            }

            Console.WriteLine("\tNők: {0} ({1}.) - {2}", noiNev, noiRajtsz, noiIdo);
            Console.WriteLine("\tFérfiak: {0} ({1}.) - {2}", ferfiNev, ferfiRajtsz, ferfiIdo);
        }

        static void Main(string[] args)
        {
            kettes();
            harmas();
            negyes();
            otos();
            hetes();
            nyolcas();
            Console.ReadKey();
        }
    }
}


Megjegyzések