2021. február 24., szerda

2021.02.24. Gyakorlás - Foci

Ellenőriztük a városos program teljes megoldását. Aki nem írt házit mára, van lehetősége pótolni. 

A focis program eddigi forrását a meeting alatt csatolmányként megkaptad.

Abban a 6-7-8. feladatot kell megoldani.

Adatállomány:

//foci.txt

//Ferencvárosi TC; 1899; 32; 31,25; Sergiy Rebrov

//FC Barcelona; 1899; 26; 805; Ronald Koeman

//Real Madrid; 1902; 34; 742; Zinédine Zidane

//Manchester United; 1878; 20; 738; Ole Gunnar Solskjaer

//Manchester City; 1880; 6; 1006; Pep Guardiola


//foci.csv (az adatok között tabulátort nyomtunk, excelben táblázatszerűen megnyílik


//Ferencvárosi TC 1899 32 31,25 Sergiy Rebrov

//FC Barcelona 1899 26 805 Ronald Koeman

//Real Madrid 1902 34 742 Zinédine Zidane

//Manchester United 1878 20 738 Ole Gunnar Solskjaer

//Manchester City 1880 6 1006 Pep Guardiola

Egy lehetséges megoldás (L.Adrián):
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace foci
{
    class Focicsapat
    {
        public string nev;
        public int alapitas;
        public int bajnok;
        public double ertek;
        public string edzo;
        public Focicsapat(string sor)
        {
            List<stringatmeneti = sor.Split(';').ToList();
            nev = atmeneti[0];
            alapitas = Convert.ToInt32(atmeneti[1]);
            bajnok = Convert.ToInt32(atmeneti[2]);
            ertek = Convert.ToDouble(atmeneti[3]);
            edzo = atmeneti[4];
        }
        public string atalakitas()
        {
            return $"A csapat neve {nev},alapítási év: {alapitas},bajnoki címek száma: {bajnok},edző neve: {edzo},csapat értéke: {ertek}";
        }
        public string nagybetu()
        {
            return $"{nev.ToUpper()}";
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Focicsapatfocicsapatok = new List<Focicsapat>();
            Console.WriteLine("1. feladat");
            foreach (var i in File.ReadAllLines("foci.txt"))
            {
                focicsapatok.Add(new Focicsapat(i));
            }
            Console.WriteLine("2. feladat");
            for (int i = 0; i < focicsapatok.Counti++)
            {
                Console.WriteLine("A csapat neve {0},alapítási év: {1},bajnoki címek száma: {2},edző neve: {3},csapat értéke: {4}"focicsapatok[i].nevfocicsapatok[i].alapitasfocicsapatok[i].bajnokfocicsapatok[i].edzofocicsapatok[i].ertek);
            }
            //3. feladat: 
            //Írjuk ki annak a csapatnak a nevét, akinek a legtöbb bajnoki címe van. 
            Console.WriteLine("3. feladat");
            int max = focicsapatok[0].bajnok;
            int index = 0;
            for (int i = 0; i < focicsapatok.Counti++)
            {
                if (max < focicsapatok[i].bajnok)
                {
                    max = focicsapatok[i].bajnok;
                    index = i;
                }
            }
            Console.WriteLine("A legtöbb címet szerző csapat neve: {0}"focicsapatok[index].nev);
            //4. feladat 
            Console.WriteLine("4. feladat");
            double min = focicsapatok[0].ertek;
            index = 0;
            for (int i = 0; i < focicsapatok.Counti++)
            {
                if (min > focicsapatok[i].ertek)
                {
                    min = focicsapatok[i].ertek;
                    index = i;
                }
            }
            Console.WriteLine("A legkevesebb címet szerző csapat és az edző neve: {0}, {1}"focicsapatok[index].nevfocicsapatok[index].edzo);
            //5. feladat 
            Console.WriteLine("5. feladat");
            for (int i = 0; i < focicsapatok.Counti++)
            {
                if (focicsapatok[i].alapitas > 1899 && focicsapatok[i].alapitas < 2000)
                {
                    Console.WriteLine(focicsapatok[i].nev);
                }
            }
            //6. feladat 
            string[] nev2 = new string[focicsapatok.Count];
            for (int i = 0; i < focicsapatok.Counti++)
            {
                nev2[i] = focicsapatok[i].nev;
            }
            Array.Sort(nev2); for (int i = 0; i < nev2.Lengthi++)
            {
                Console.WriteLine($"Név: {nev2[i]}");
            }
            //7. feladat 
            Console.Write("Kérem egy csapat nevét: ");
            string keres = Console.ReadLine();
            for (int i = 0; i < focicsapatok.Counti++)
            {
                if (keres == focicsapatok[i].nev)
                {
                    Console.WriteLine($"A csapat neve {focicsapatok[i].nev},alapítási év: {focicsapatok[i].alapitas},bajnoki címek száma: {focicsapatok[i].bajnok},edző neve: {focicsapatok[i].edzo},csapat értéke: {focicsapatok[i].ertek}");
                }
            }
            //8. feladat 
            Console.WriteLine("8. feladat");
            Console.Write("Kérem egy csapat nevét: ");
            keres = Console.ReadLine();
            string atalakit = string.Empty;
            for (int i = 0; i < focicsapatok.Counti++)
            {
                if (keres == focicsapatok[i].nev)
                {
                    atalakit = focicsapatok[i].atalakitas();
                    Console.WriteLine(atalakit);
                }
            }
            //9. feladat 
            Console.WriteLine("9. feladat");
            Random rnd = new Random();
            index = rnd.Next(focicsapatok.Count);
            Console.WriteLine($"A csapat neve {focicsapatok[index].nev},alapítási év: {focicsapatok[index].alapitas},bajnoki címek száma: {focicsapatok[index].bajnok},edző neve: {focicsapatok[index].edzo},csapat értéke: {focicsapatok[index].ertek}");
            Console.WriteLine($"Sorszáma: {index + 1}");
            string ki = String.Empty;
            for (int i = 0; i < focicsapatok.Counti++)
            {
                if (i == index)
                {
                    ki = focicsapatok[i].nagybetu();
                    Console.WriteLine(ki);
                }
            }
            //10. feladat 
            string ki2 = String.Empty;
            StreamWriter sw = new StreamWriter("nevek.txt");
            for (int i = 0; i < focicsapatok.Counti++)
            {
                ki2 = focicsapatok[i].nagybetu();
                sw.WriteLine(ki2);
            }
            sw.Close();
            Console.ReadLine();
        }
    }
}

Varsó:
Varsó foci


using System
  
using System.Collections.Generic
  
using System.Linq
  
using System.Text
  
using System.IO
  
  
  
//foci.txt  
  
//Ferencvárosi TC; 1899; 32; 31,25; Sergiy Rebrov  
  
//FC Barcelona; 1899; 26; 805; Ronald Koeman  
  
//Real Madrid; 1902; 34; 742; Zinédine Zidane  
  
//Manchester United; 1878; 20; 738; Ole Gunnar Solskjaer  
  
//Manchester City; 1880; 6; 1006; Pep Guardiola  
  
  
  
//foci.csv (az adatok között tabulátort nyomtunk, excelben táblázatszerűen megnyílik  
  
  
  
//Ferencvárosi TC 1899 32 31,25 Sergiy Rebrov  
  
//FC Barcelona 1899 26 805 Ronald Koeman  
  
//Real Madrid 1902 34 742 Zinédine Zidane  
  
//Manchester United 1878 20 738 Ole Gunnar Solskjaer  
  
//Manchester City 1880 6 1006 Pep Guardiola  
  
  
  
namespace _20210215 
  
  
    class Focicsapat 
  
    { 
  
        public string nev
  
        public int alapitas
  
        public int bajnok
  
        public double ertek
  
        public string edzo
  
  
  
  
  
        public Focicsapat(string sor
  
        { 
  
            List<stringatmeneti = sor.Split(';').ToList(); 
  
            nev = atmeneti[0]; 
  
            alapitas = Convert.ToInt32(atmeneti[1]); 
  
            bajnok = Convert.ToInt32(atmeneti[2]); 
  
            ertek = Convert.ToDouble(atmeneti[3]); 
  
            edzo = atmeneti[4]; 
  
        } 
         
        public string kiir() 
        { 
            string ki = $"\nCsapat neve: {nev}\n---------------------\nAlapítási ideje: {alapitas}\nBajnoki címek száma: {bajnok}\nCsapat értéke: {ertek}\nEdző neve: {edzo}\n"
            return ki
        } 
  
  
    } 
  
    class Program 
  
    { 
        static void adatle(string beNevList<Focicsapata
        { 
            bool talalt = false
            for (int i = 0; i < a.Counti++) 
            { 
                if (a[i].nev.ToUpper() == beNev.ToUpper()) 
                { 
                    talalt = true
                    Console.WriteLine(a[i].kiir()); 
                } 
            } 
            if (!talalt
            { 
                Console.WriteLine("Hiba történt az alkalmazás futtatása közben! A lista nem tartalmazza a lekérdezni kívánt csapatot."); 
            } 
        } 
  
        static int csapatsorsolas(int lng
        { 
            Random rnd = new Random(); 
            return rnd.Next(0, lng); //index 
        } 
        static string csapatkereses(int sorszamList<Focicsapata
        { 
            string ki = ""
            for (int i = 0; i < a.Counti++) 
            { 
                if (i == (sorszam - 1)) 
                { 
                    ki = a[i].nev;  
                } 
            } 
            return ki
        } 
        static string csapatsorsolaski(int csapatsorszamList<Focicsapata
        { 
            return $"A {csapatsorszam}. sorszámmal ellátott csapat a(z) {nagybetus(csapatkereses(csapatsorszama))}!"
        } 
        static string nagybetus(string a
        { 
            return a.ToUpper(); 
        } 
         
  
  
        static void Main(string[] args
  
        { 
  
            List<Focicsapatfocicsapatok = new List<Focicsapat>(); 
  
            Console.WriteLine("1. feladat: Beolvasás"); 
  
            foreach (var i in File.ReadAllLines("foci.csv")) 
  
            { 
  
                focicsapatok.Add(new Focicsapat(i)); 
  
            } 
            Console.WriteLine("\n2. feladat: Adatok kiírása"); 
  
            for (int i = 0; i < focicsapatok.Counti++) 
  
            { 
  
                //Console.WriteLine("\nA csapat neve {0}, alapítási év: {1},bajnoki címek száma: {2}, edző neve: {3}, csapat értéke: {4}", focicsapatok[i].nev, focicsapatok[i].alapitas, focicsapatok[i].bajnok, focicsapatok[i].edzo, focicsapatok[i].ertek); 
                Console.WriteLine(focicsapatok[i].kiir()); 
            } 
  
            //3. feladat: Írjuk ki annak a csapatnak a nevét, akinek a legtöbb bajnoki címe van.(bajnok)  
  
            Console.WriteLine("\n3. feladat"); 
  
            int max = focicsapatok[0].bajnok
  
            int index = 0; 
  
            for (int i = 0; i < focicsapatok.Counti++) 
  
            { 
  
                if (max < focicsapatok[i].bajnok
  
                { 
  
                    max = focicsapatok[i].bajnok
  
                    index = i
  
                } 
  
            } 
  
            Console.WriteLine($"A(z) {focicsapatok[index].nev} szerezte a legtöbb címet."); 
  
  
  
            //4.feladat: Keressük meg a legkevésbé eredményes csapatot, írjuk ki a nevét és az edző nevét. (ertek)   
  
  
  
            Console.WriteLine("4.feladat"); 
  
            double min = focicsapatok[0].ertek
  
            int index2 = 0; 
  
            for (int i = 1; i < focicsapatok.Counti++) 
  
            { 
  
                if (min > focicsapatok[i].ertek
  
                { 
  
                    min = focicsapatok[i].ertek
  
                    index2 = i
  
                } 
  
            } 
  
            Console.WriteLine("A legkevésbé eredményes csapat neve nem más, mint:{0}, edzője:{1}"focicsapatok[index2].nevfocicsapatok[index2].edzo); 
  
  
  
  
  
            //5. feladat: Melyik csapatot alapították a 20. században? (1900-1999) (alapitas)   
  
  
  
            Console.WriteLine("5. feladat"); 
  
  
  
            for (int i = 0; i < focicsapatok.Counti++) 
  
            { 
  
                if (focicsapatok[i].alapitas > 1899 && focicsapatok[i].alapitas < 2000) 
  
                { 
  
                    Console.WriteLine($"A(z) {focicsapatok[i].nev} csapatot a 20. században alapították."); 
  
                } 
  
            } 
  
  
  
  
  
  
  
            //6. feladat: Tegyük növekvő abc sorrendbe a csapatok neveit. (nev)  
            Console.WriteLine("6. feladat\nCsapatok nevei ABC sorrendben"); 
            List<stringfociABCnev = new List<string>(); 
            for (int i = 0; i < focicsapatok.Counti++) 
            { 
                fociABCnev.Add(focicsapatok[i].nev); 
            } 
            fociABCnev.Sort(); 
            foreach (var x in fociABCnev
            { 
                Console.Write($"{x}, "); 
            } 
            Console.WriteLine(); 
            //7. feladat: Kérjük be a felhasználótól, hogy melyik csapat adatait szeretné látni. 
            Console.WriteLine("7. feladat\nKívánt focicsapat adatainak kiírása"); 
            Console.Write("Kérem a csapat nevét: "); 
            string be1 = Console.ReadLine(); 
            //Írjuk ki ennek a csapatnak az összes adatát a képernyőre. 
            adatle(be1focicsapatok); 
            //8. feladat: Oldjuk meg az előző feladatot úgy, hogy a 2. feladatot újrahasznosítjuk függvényként. 
            Console.WriteLine("8. feladat"); 
            //9. feladat: A főprogramban sorsoljunk ki véletlenszerűen egy csapatot (az indexét).  
            Console.WriteLine("9. feladat\nCsapatsorsolás"); 
            //Írjuk ki a csapat sorszámát a képernyőre (a sorszám 1-től kezdődik). 
            int randomcsapat = csapatsorsolas(focicsapatok.Count()) + 1; //ssz 
            Console.WriteLine($"Sorsolás eredménye: {randomcsapat}. sorszámú csapat.\n"); 
            //Írjunk egy függvényt, ami megkeresi a kisorsolt indexhez tartozó nevet és nagybetűsen visszaadja a főprogramnak. 
            //Írjuk ki a kisorsolt csapat nagybetűs nevét a függvény segítségével a főprogramban.  
            Console.WriteLine(csapatsorsolaski(randomcsapatfocicsapatok)); 
            //10. feladat:   
            //Egy új fájlba írjuk ki az összes csapat nevét nagybetűsen a 9. feladatban megadott függvény segítségével. 
            StreamWriter sw = new StreamWriter("CsapatnevNagySzoveg.csv"); //Itt kiírásra kerül a sorszám is egy másik fv segítségével. 
            for (int i = 0; i < focicsapatok.Counti++) 
            { 
                sw.WriteLine(csapatsorsolaski(i + 1, focicsapatok)); 
            } 
            sw.Close(); 
            Console.ReadLine(); 
  
        } 
  
    } 
  
  
  
 
 


 

2021. február 23., kedd

2021.02.23. Elmélet ismétlés, gyakorlás (városok OOP 2.0)

 Ellenőriztük az elmélet tesztek eredményét. További, gyakorlati feladatmegoldással párhuzamos házi feladat tanulni a két elméleti témakört.

Továbbhaladtunk a városos feladatsorral.

Házi feladat megoldani végig minden feladatot.

Eddig jutottunk:

using System;

using System.IO;

using System.Linq;

using System.Collections.Generic;



namespace varosokOOP
{

    class Varosok

    {

        public string nev;

        public int lakszam;

        public int bptav;

        public string mszek;



        public Varosok(string sor)

        {

            List<stringatmen = sor.Split(' ').ToList();

            nev = atmen[0];

            lakszam = Convert.ToInt32(atmen[1]);

            bptav = Convert.ToInt32(atmen[2]);

            if (atmen.Count == 4)

            {

                mszek = "nem";

            }

            else

            {

                mszek = "igen";

            }

        }



        public string kiir()

        {

            string kiiras = $"Város neve: {nev}, Lakosok száma: {lakszam}, Távolsága Budapesttől: {bptav}, Megyeszékhely: {mszek}";

            return kiiras;

        }

    }



    class Program

    {
        static string messzebbVaros(List<Varosoka)
        {
            int messze = a[0].bptav;
            int index = 0;
            for (int i = 0; i < a.Counti++)
            {
                if (messze < a[i].bptav)
                {
                    messze = a[i].bptav;
                    index = i;
                }
            }
            return a[index].nev;
        }

        static string kevesebbLakos(List<Varosoka)

        {

            int lakos = a[0].lakszam;
            int index = 0;
            for (int i = 0; i < a.Counti++)
            {
                if (lakos > a[i].lakszam)
                {
                    lakos = a[i].lakszam;
                    index = i;
                }
            }
            return a[index].nev;

        }
        static void Main(string[] args)

        {

            //A program neve legyen: varosok. 

            //A tanult objektum-orientált programszerkezetet használd a megoldásnál. 

            //Minden képernyőre író feladat előtt írjuk ki a főprogramban a feladat sorszámát. 

            //A fájl most 5 sort tartalmaz, de a programod készüljön fel arra, 

            //hogy hosszabb, és más tartalmú fájlt is fel tudjon dolgozni. 





            //A programban városok adatait tároljuk. 

            //Az adatok soronként: a város neve, lakosainak száma, Budapesttől mért távolsága, 

            //illetve amelyik város nem megyeszékhely, ott még ez is szerepel: NO. 





            //Ez legyen a varosok.txt tartalma: 

            /* 

            Békéscsaba 59000 210 

            Szolnok 72000 119 

            Kecskemét 112000 93 

            Nyíregyháza 118000 230 NO 

            Miskolc 164000 182 

            */





            //1.feladat: 

            Console.WriteLine("1. feladat");

            //Olvasd be a fájlt, és tárold a tartalmát egy osztálypéldányokat tartalmazó listában. 

            List<Varosokadatok = new List<Varosok>();

            foreach (var z in File.ReadAllLines("varosok.txt"))

            {

                adatok.Add(new Varosok(z));

            }



            //2.feladat: 

            Console.WriteLine("\n2. feladat");

            //Írd ki az adatokat a képernyőre, egy sorba egy város adatait. 

            for (int i = 0; i < adatok.Counti++)

            {

                Console.WriteLine(adatok[i].kiir());

            }



            //3.feladat: 

            Console.WriteLine("\n3. feladat");

            //Írd ki a képernyőre annak a városnak a nevét, és a népességét, amely nem megyeszékhely. 

            //(Ha több ilyen lenne, mindet ki kéne írni.) Ha nincs ilyen, írj ki hibaüzenetet. 

            bool van = false;

            for (int i = 0; i < adatok.Counti++)

            {

                if (adatok[i].mszek == "Nem")

                {

                    van = true;

                    Console.WriteLine($"{adatok[i].nev}, Népesség: {adatok[i].lakszam}");

                }

            }



            if (!van)

            {

                Console.WriteLine("Az összes város megyeszékhely!");

            }



            //4.feladat: 

            Console.WriteLine("\n4. feladat");

            //Írd ki a Budapesttől legtávolabbi város nevét a képernyőre. 
            //A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.         
            Console.WriteLine($"A legmesszibb város: {messzebbVaros(adatok)}");


            //5.feladat:

            Console.WriteLine("\n5. feladat");

            //Írd ki a legkevesebb lakosú város nevét a képernyőre. 
            //A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.

            Console.WriteLine($"A legkisebb lakosú város: {kevesebbLakos(adatok)}");


            //6.feladat: 

            Console.WriteLine("\n6. feladat");

            //Kérd meg a felhasználót a főprogramban, hogy adjon meg egy lakosságszámot. 
            //Írd ki a felhasználó által beírt érték fölötti lakosságszámnál nagyobb lakosságú városok neveit, soronként egyet. 

            //Ha nincs ilyen, írj ki hibaüzenetet. 



            //7.feladat: 

            Console.WriteLine("\n7. feladat");

            //Döntsd el, hogy van-e 180 km-nél távolabbi város. Ha találsz ilyet, 

            //írd ki az elsőnek a nevét és a hozzá tartozó km-t. 

            //Ha nincs ilyen, írj ki hibaüzenetet. 



            //8. feladat: 

            Console.WriteLine("\n8. feladat");

            //Írd ki egy új fájlba a városok neveit nagybetűsen, 

            //mögéjük vesszővel elválasztva azt a szót, 

            //hogy megyeszékhely/nem megyeszékhely 

            //(a valóságnak megfelelően). 

        }

    }

}