2022.03.16. Városok - megoldással

Első óránkon töri próbaérettségi volt. 

Aztán folytattuk a városos programot. Házi feladat befejezni.


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

namespace _2022._03._09
{
    class Varos
    {
        public string nev;
        public int lakossag;
        public int tavolsag;
        public bool megyeszekhely;

        public Varos( string sor)
        {
            List<string> atmeneti = sor.Split(" ").ToList();
            nev = atmeneti[0];
            lakossag =Convert.ToInt32( atmeneti[1]);
            tavolsag= Convert.ToInt32(atmeneti[2]);
            if (atmeneti.Count==3)
            {
                megyeszekhely = true;
            }
            else
            {
                if (atmeneti.Count==4)
                {
                    megyeszekhely = false;
                }
            }
        }
       
        public void kiir()
        {
            Console.WriteLine("Városnév: {0} Lakosság: {1} távolság: {2}",nev,lakossag,tavolsag,megyeszekhely);
            if (megyeszekhely)
            {
                Console.WriteLine("megyeszékhely");
            }
        }
    }
    class Program
    {
        static void nemMegyeszekhely3(List<Varos>v)
        {
            bool van = false;
            for (int i = 0; i <v.Count; i++)
            {
                if (!v[i].megyeszekhely)
                {
                    Console.WriteLine($"Neve: {v[i].nev} Népessége: {v[i].lakossag}");
                    van = true;
                }
            }
            if (!van)
            {
                Console.WriteLine("Minden település megyeszékhely.");
            }
           
        }
        static bool nemMegyeszekhely3fv(List<Varos> v)
        {
            bool van = false;
            for (int i = 0; i < v.Count; i++)
            {
                if (!v[i].megyeszekhely)
                {
                    Console.WriteLine($"Neve: {v[i].nev} Népessége: {v[i].lakossag}");
                    van = true;
                }
            }
            return van;
        }
        static int legtavolabbi4(List<Varos>v)
        {
            int max =v[0].tavolsag;
            int index = 0;
            for (int i = 1; i < v.Count; i++)
            {
                if (v[i].tavolsag>max)
                {
                    max = v[i].tavolsag;
                    index = i;
                }
            }
            return index;
        }
        static int minimum(List<Varos> v)
        {
            int min = v[0].lakossag;
            int index = 0;
            for (int i = 1; i < v.Count; i++)
            {
                if (v[i].lakossag < min)
                {
                    min = v[i].lakossag;
                    index = i;
                }
            }
            return index;
        }
        static void lakos(List<Varos> v,int fel)
        {
            for (int i = 0; i < v.Count; i++)
            {
                if (v[i].lakossag>fel)
                {
                    Console.WriteLine(v[i].nev);
                   
                }
            }
            if (fel > 164000)
            {
                Console.WriteLine("hiba");
            }
        }
        static void BP(List<Varos>v )
        {
            int szam = 180;
            int i = 0;
            bool igaz = false;

            while (i<v.Count && !igaz)

            {
                if (v[i].tavolsag>szam)
                {
                Console.WriteLine("Ez a varos tavolabb van mint 180km {0}",v[i].nev);
                igaz = true;
                }    
                i++;
            }
            if (!igaz)

            {
                Console.WriteLine("Nincs 180km-nél tavolabbi varos");
            }
        }
        static void olvas(List<Varos>v)
        {
            StreamWriter sr = new StreamWriter("Varosok2.txt");
            int i = 0;
            while (i<v.Count)
            {
                sr.Write("{0}", v[i].nev.ToUpper());
                if (v[i].megyeszekhely==true)
                {
                    sr.WriteLine(" megyeszékhely");
                }
                else
                {
                    sr.WriteLine(" nem megyeszékhely");
                }
                i++;
            }
            sr.Close();
        }
        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:

            //Olvasd be a fájlt, és tárold a tartalmukat egy osztálypéldányokat tartalmazó listában.
            Console.WriteLine("1.feladat");
            List<Varos> varosok = new List<Varos>();
            foreach (var item in File.ReadAllLines("varosok.txt"))
            {
                varosok.Add(new Varos(item));
            }
           
            //2.feladat:
            Console.WriteLine("2.feladat");
            //Írd ki az adatokat a képernyőre, egy sorba egy város adatait.          
            for (int i = 0; i < varosok.Count; i++)
            {
                varosok[i].kiir();
            }

            //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.
            nemMegyeszekhely3(varosok);
            Console.WriteLine("3.feladat függvénnyel");
            if (!nemMegyeszekhely3fv(varosok))
            {
                Console.WriteLine("Minden település megyeszékhely.");
            }

            //4.feladat:
            Console.WriteLine("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.        
            int ind = legtavolabbi4(varosok);
            Console.WriteLine($"A Budapesttől legtávolabbi város neve: {varosok[ind].nev} és távolsága: {varosok[legtavolabbi4(varosok)].tavolsag} km");

            //5.feladat:
            Console.WriteLine("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($" A legkevesebb lakosú város neve: {varosok[minimum(varosok)].nev}");

            //6.feladat:
            Console.WriteLine("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("Adj meg egy lakosságszámot");
            int fel = Convert.ToInt32(Console.ReadLine());
            lakos(varosok, fel);
            //7.feladat:
            Console.WriteLine("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.
           BP(varosok);
            //8. feladat:
            //mögéjük vesszővel elválasztva azt a szót,
            //hogy megyeszékhely/nem megyeszékhely
            //Írd ki egy új fájlba a városok neveit nagybetűsen,
            //(a valóságnak megfelelően)
            olvas(varosok);
        }
    }
}

2023.04.26. Javító feladatsor