2021. február 17., szerda

2021.02.17. Városok feladat - OOP verzió 1.0

 A városos feladatsorunkból készítünk egy új verziót.

Az eredeti itt van.

Új feladatsor: 

            //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:

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

            //2.feladat:

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

 

            //3.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.

 

            //4.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.        

 

            //5.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.      

             

            //6.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:

            //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:

            //Í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).


Egy lehetséges megoldás (Varsó):
using System
using System.IO
using System.Linq
using System.Collections.Generic
namespace _20210217 
    class Varos 
    { 
        public string varosnev
        public int lakosokszama
        public int tavolsag
        public string megyeszekhely
        public Varos(string sor
        { 
            List<stringatmeneti = sor.Split(" ").ToList(); 
            varosnev = atmeneti[0]; 
            lakosokszama = Convert.ToInt32(atmeneti[1]); 
            tavolsag = Convert.ToInt32(atmeneti[2]); 
            if (atmeneti.Count < 4) 
            { 
                megyeszekhely = "Igen"
            } 
            else 
            { 
                if (atmeneti[3] == "NO"
                { 
                    megyeszekhely = "Nem"
                } 
                else 
                { 
                    throw new Exception("A sor helytelen adatot tartalmaz!"); 
                } 
            } 
        } 
        public string teljeskiiras() 
        { 
            string ki = $"Település neve: {varosnev}, Lakosok száma: {lakosokszama} fő, Budapesttől való távolság: {tavolsag} km, Megyeszékhely? {megyeszekhely}"
            return ki
        } 
    } 
    class Program 
    { 
        static string lakszamFelett(List<Varosaint b
        { 
            string lakFelettKiir = ""
            bool van = false
            for (int i = 0; i < a.Counti++) 
            { 
                if (b < a[i].lakosokszama
                { 
                    lakFelettKiir += "\n" + a[i].varosnev
                    van = true
                } 
            } 
            if (!van
            { 
                lakFelettKiir = "Nincs az ön által megadott lakosságszámnál nagyobb lakosszámmal rendelkező település."
            } 
            return lakFelettKiir
        } 
        static void fajlkiiras(List<Varosa
        { 
            StreamWriter sw = new StreamWriter("Varos1.txt"); 
            for (int i = 0; i < a.Counti++) 
            { 
                if (a[i].megyeszekhely == "Nem"
                { 
                    sw.WriteLine($"{a[i].varosnev.ToUpper()},Nem megyeszékhely"); 
                } 
                else 
                { 
                    sw.WriteLine($"{a[i].varosnev.ToUpper()},Megyeszékhely"); 
                } 
            } 
            sw.Close(); 
        } 
        static string kmMesszebb(int vizsgtavList<Varosa
        { 
            bool megfelel = false
            int k = 0; 
            while (k < a.Count && !megfelel
            { 
                if (a[k].tavolsag > vizsgtav
                { 
                    megfelel = true
                } 
                k++; 
            } 
            if (megfelel
            { 
                return $"{a[k - 1].varosnev} az az első település amely Budapesttől {vizsgtav} kilométeren túl helyezkedik el! A távolság {a[k - 1].tavolsag} kilométer."
            } 
            else 
            { 
                return $"HIBA! Nincsen olyan település az adatok között amely Budapesttől messzebb lenne, mint {vizsgtav} kilométer"
            } 
        } 
        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<Varosvarosok = new List<Varos>(); 
            foreach (var i in File.ReadAllLines("varosok.txt")) 
            { 
                varosok.Add(new Varos(i)); 
            } 
            //2.feladat: 
            //Írd ki az adatokat a képernyőre, egy sorba egy város adatait.  
            Console.WriteLine("2. feladat"); 
            for (int i = 0; i < varosok.Counti++) 
            { 
                Console.WriteLine(varosok[i].teljeskiiras()); 
            } 
            //3.feladat: 
            Console.WriteLine("3. 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 megyeszhely = false
            for (int i = 0; i < varosok.Counti++) 
            { 
                if (varosok[i].megyeszekhely == "Nem"
                { 
                    Console.WriteLine(varosok[i].teljeskiiras()); 
                    megyeszhely = true
                } 
            } 
            if (megyeszhely == false
            { 
                Console.WriteLine("Nincs olyan település a listában, amely nem megyeszékhely!"); 
            } 
            //4.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("4. feladat\nLegtávolabbi város nevének kiiratása..."); 
            int max = Convert.ToInt32(varosok[0].tavolsag); 
            int legtavolabbi = 0; 
            for (int i = 0; i < varosok.Counti++) 
            { 
                if (max > varosok[i].tavolsag
                { 
                    max = varosok[i].tavolsag
                    legtavolabbi = i
                } 
            } 
            Console.WriteLine(varosok[legtavolabbi].teljeskiiras()); 
            //5.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("5. feladat\nLegkevesebb lakosú város nevének kiiratása..."); 
            int min = Convert.ToInt32(varosok[0].lakosokszama); 
            int legkevesebblakos = 0; 
            for (int i = 0; i < varosok.Counti++) 
            { 
                if (min < varosok[i].lakosokszama
                { 
                    min = varosok[i].lakosokszama
                    legkevesebblakos = i
                } 
            } 
            Console.WriteLine(varosok[legkevesebblakos].teljeskiiras()); 
            //6.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. 
            Console.WriteLine("6. feladat\nLakosságbekérés"); 
            Console.Write("Kérek egy értéket: "); 
            int bekert = Convert.ToInt32(Console.ReadLine()); 
            Console.WriteLine(lakszamFelett(varosokbekert)); 
            //7.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. 
            Console.WriteLine("7. feladat\n180 km-nél távolabbi városok kilistázása..."); 
            const int vizsgertek = 180; 
            Console.WriteLine(kmMesszebb(vizsgertekvarosok)); 
            //8. 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). 
            Console.WriteLine("8. feladat\nVárosok kiiratása fájlba..."); 
            fajlkiiras(varosok); 
            Console.WriteLine("A program bezárásahoz nyomjon meg egy billentyűt..."); 
            Console.ReadKey(); 
        } 
    } 

Nincsenek megjegyzések:

Megjegyzés küldése