2020. december 8., kedd

2020.12.12. Ismétlés

 A lenti szempontok szerint folytasd szombaton a témazáróra felkészülést. Leadandó feladatod nincs, de a gyakorlás jelenjen meg a digifüzetedben. Mindenki a saját felkészültségéhez igazítja, milyen módon oldja meg a feladatokat.

  • alap algoritmusok megfogalmazása a saját szavaiddal, de szakkifejezéseket is használva
  • ciklusok lefutásának vizsgálata; pl. mennyi a ciklusváltozó értéke a ciklus különböző futásai esetén
  • mi a hiba ez egyes régebbi megoldásaidban?
  • az egyes feladatok ha kis mértékben változnak, mit kell változtani a megoldáson?
  • ha a szöveges fájl tartalma változik (másik határoló karakter, több adat), azt hogyan kell követni a kódban?
  • ha a szövegfájlban nem egyforma hosszúságúak a sorok, mire kell figyelni?

2020.12.08. Ismétlés

2020. december 7., hétfő

2020.12.07. Ismétlés

 Ellenőriztük a városos feladatsort. Mostantól ismételjük a 6 feladatsort. Elmondtam a jövő heti számonkérési formákat. Akinek nem volt mára végig kész a házi feladata, még van lehetősége holnapig pótolni.

2020. december 1., kedd

2020.12.01. Városok feladat

 Nincs hétfőn házi feladat.

          //A program neve legyen: varosok. Metódusos programszerkezetet használj a megoldásnál.

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

            //Aki tudja, oldja meg, hogy megszámolja a fájlban a sorokat,

            //és annyi elemű tömböt hoz létre. Egyébként pedig vedd 5 hosszúra a tömböket.

 

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

            //A következő adatokat szöveges fájlból vigyük föl összesen 4 tömbbe.

            //Az első tömbben a városok nevei;

            //a másodikban a lakosok száma;

            //a harmadikban a távolság;

            //a negyedikben vagy üres karakterlánc, vagy a NO szó szerepeljen.

            /*

            Békéscsaba 59000 210

            Szolnok 72000 119

            Kecskemét 112000 93

            Nyíregyháza 118000 230 NO

            Miskolc 164000 182

            */

 

            //1.feladat:

            //Olvassuk be a fájlt, és vigyük föl tömbökbe az adatokat,

            //majd írjuk is ki a tartalmukat, egy sorba egy város adatait.

            Console.WriteLine("1. feladat:");

 

            Console.ReadLine();

            //2.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, írjunk ki hibaüzenetet.

            Console.WriteLine("2. feladat:");

 

 

            Console.ReadLine();

            //3.feladat:

            //Előzetesen meg kell nézni innen a cserét:

            //https://bestgroupprogramming.blogspot.com/2020/03/20200323-szoveg-pozicionalasa.html

            //Cseréld meg a legtávolabbi város adatait a legkevesebb lakosú város adataival úgy,

            //hogy az összetartozó adatok továbbra is egymáshoz tartozzanak.

            //Segítség:

            //Elsőként keresd meg a legnagyobb távolságot, jegyezd meg egy új változóban,

            //hanyadik (példánkban 230, ami a 4. indexű helyen van).

            //Másodikként keresd meg a legkevesebb lakost, jegyezd meg egy új változóban,

            //hogy hanyadik (példánkban 59000, ami a 0. helyen van).           

            //Mostmár tudod, melyik két sorát kell megcserélni minden tömbnek

            //(példánkban Békéscsaba és Nyíregyháza összes adatát kell megcserélni).

            //A csere első lépéseként Békéscsaba minden adatát (4 adat)

            //beteszed egy-egy megfelelő típusú változóba.

            //A csere második lépéseként  Nyíregyháza összes adatát egyesével bemásolod

            //a tömbök nulladik helyére. Ezzel fölülírod, ami ott van, de éppen ez a cél.

            //A csere harmadik lépéseként a változókból minden adatot bemásolsz

            //a 4. indexű helyekre. Ezzel fölülírod, ami ott van, de éppen ez a cél.

            //Kész. Ellenőrzésként írasd ki újra az összes tömböt.

            Console.WriteLine("3. feladat:");

            Console.ReadLine();

            //4.feladat:

            //Írjuk ki a Budapesttől legtávolabbi város nevét a képernyőre.          

            Console.WriteLine("4. feladat:");

            Console.ReadLine();

            //5.feladat:

            //Írjuk ki a legkevesebb lakosú város nevét a képernyőre.

            Console.WriteLine("5. feladat:");

            Console.ReadLine();

            //6.feladat:

            //Írjuk ki a 100000 lakosúnál nagyobb városok neveit is, soronként egyet.

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

            Console.WriteLine("6. feladat:"); Console.ReadLine();

 

            //7.feladat:

            //Döntsük el, hogy van-e 180 km-nél távolabbi város. Ha találtunk ilyet,

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

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

            Console.WriteLine("7. feladat:");

            Console.ReadLine();

 

            //8.feladat:

            //Számoljuk meg, és írjuk ki, hogy hány 50000 és 100000 közötti lakosú város van.

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

            Console.WriteLine("8. feladat:");

            Console.ReadLine();

 

 

            //9.feladat:

            //Írjuk ki a városok távolságának átlagát.

            Console.WriteLine("9. feladat:");

            Console.ReadLine();

 

 

            //10.feladat:

            //Egy új tömbbe másoljuk át a megyeszékhelyek nevét. Ha nincs ilyen, írjunk ki hibaüzenetet.

            Console.WriteLine("10. feladat:");

 

            Console.ReadLine();

 

 

            //11. feladat:

            //Demonstráld a képernyőn a városok lakosainak számát a következőképpen:

            //Az első sorba írd ki a város nevét. A következő sorba írj ki

            //annyi # jelet (egyenként, ciklussal), ahány ezer lakosa van a városnak

            //(nem baj, ha a jelek a következő sorba is átcsúsznak).

            //Ismételd ezt meg az összes várossal.

            //A feladat megoldásához arra van szükség, hogy azon a cikluson belül,

            //ami végigmegy a városnév tömbön, és kiírja a városok nevét,

            //indítani kell még egy ciklust, ami meg kiírja a csillagokat.

            //Használj az első ciklusnak for ciklust, a belső ciklus legyen while ciklus,

            //és nyilván más legyen a ciklusváltozó neve.

            Console.WriteLine("11. feladat:");

 

            Console.ReadLine();

Ricsi megoldása alapján:

using System
using System.IO;

namespace varosok11b1
{
    class Program
    {
        static string[] varos = new string[5]; 
        static int[] lakos = new int[5]; 
        static int[] tavolsag = new int[5]; 
        static string[] megye = new string[5]; 
        static int index = 0; //legtávolabbi város indexe
        static int index2 = 0;  //legkevesebb lakosú város indexe
        //A program neve legyen: varosok. Metódusos programszerkezetet használj a megoldásnál. 
        //Minden képernyőre író feladat előtt írjuk ki a képernyőre a feladat sorszámát. 
        //Aki tudja, oldja meg, hogy megszámolja a fájlban a sorokat, 
        //és annyi elemű tömböt hoz létre. Egyébként pedig vedd 5 hosszúra a tömböket.  

        //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. 
        //A következő adatokat szöveges fájlból vigyük föl összesen 4 tömbbe. 
        //Az első tömbben a városok nevei; 
        //a másodikban a lakosok száma; 
        //a harmadikban a távolság; 
        //a negyedikben vagy üres karakterlánc, vagy a NO szó szerepeljen. 

        /* 
        Békéscsaba 59000 210
        Szolnok 72000 119
        Kecskemét 112000 93
        Nyíregyháza 118000 230 NO
        Miskolc 164000 182
        */ 

        //1.feladat: 
        //Olvassuk be a fájlt, és vigyük föl tömbökbe az adatokat, 
        //majd írjuk is ki a tartalmukat, egy sorba egy város adatait. 
        static void elso() 
        { 
            StreamReader sr = new StreamReader("varosok.txt"); 
            string[] atmeneti; 
            int j = 0; 
            while (!sr.EndOfStream) 
            { 
                atmeneti = sr.ReadLine().Split(' '); 
                varos[j] = atmeneti[0]; 
                lakos[j] = Convert.ToInt32(atmeneti[1]); 
                tavolsag[j] = Convert.ToInt32(atmeneti[2]); 
                if (atmeneti.Length == 3) 
                { 
                    megye[j] = "Megyeszékhely"; 
                } 
                else 
                { 
                    megye[j] = "Nem megyeszékhely"; 
                } 
                j++; 
            } 
            sr.Close(); 
            kiir();      
        } 

        static void kiir() 
        { 
            for (int i = 0; i < varos.Length; i++) 
            { 
                Console.WriteLine("{0}: Lakossága: {1}, Távolság Budapesttől: {2}, {3}", varos[i], lakos[i], tavolsag[i], megye[i]); 
            } 
        } 

        //2.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, írjunk ki hibaüzenetet. 
        static void masodik() 
        { 
            for (int i = 0; i < megye.Length; i++) 
            { 
                if (megye[i] == "Nem megyeszékhely") 
                { 
                    Console.WriteLine("{0}: Lakossága:{1}", varos[i], lakos[i]); 
                } 
            }  
        } 

        //3.feladat: 
        static void legtavolabbi() 
        {
            int max = tavolsag[0];
            for (int i = 1; i < tavolsag.Length; i++)
            {
                if (tavolsag[i] > max)
                {
                    max = tavolsag[i];
                    index = i;
                }
            } 
        } 

        static void legkevesebb_lakos() 
        {             
            int min = lakos[0]; 
            for (int i = 1; i < lakos.Length; i++) 
            { 
                if (lakos[0] < min) 
                { 
                    min = lakos[i]; 
                    index2 = i; 
                } 
            } 
        } 

        static void harmadik() 
        { 
            //Előzetesen meg kell nézni innen a cserét: 
            //https://bestgroupprogramming.blogspot.com/2020/03/20200323-szoveg-pozicionalasa.html 
            //Cseréld meg a legtávolabbi város adatait a legkevesebb lakosú város adataival úgy, 
            //hogy az összetartozó adatok továbbra is egymáshoz tartozzanak. 
            //Segítség: 
            //Elsőként keresd meg a legnagyobb távolságot, jegyezd meg egy új változóban, 
            //hanyadik (példánkban 230, ami a 4. indexű helyen van). 
            legtavolabbi(); 
            legkevesebb_lakos(); 
            //Másodikként keresd meg a legkevesebb lakost, jegyezd meg egy új változóban, 
            //hogy hanyadik (példánkban 59000, ami a 0. helyen van). 
            //Mostmár tudod, melyik két sorát kell megcserélni minden tömbnek 
            //(példánkban Békéscsaba és Nyíregyháza összes adatát kell megcserélni). 
            //A csere első lépéseként Békéscsaba minden adatát (4 adat) 
            //beteszed egy-egy megfelelő típusú változóba. 
            string csereVaros = varos[index]; 
            int csereLakos = lakos[index]; 
            int csereTavolsag = tavolsag[index]; 
            string csereMegye = megye[index]; 
            //A csere második lépéseként  Nyíregyháza összes adatát egyesével bemásolod 
            //a tömbök nulladik helyére. Ezzel fölülírod, ami ott van, de éppen ez a cél. 
            varos[index] = varos[index2];
            lakos[index] = lakos[index2];
            tavolsag[index] = tavolsag[index2];
            megye[index] = megye[index2]; 
            //A csere harmadik lépéseként a változókból minden adatot bemásolsz 
            //a 4. indexű helyekre. Ezzel fölülírod, ami ott van, de éppen ez a cél. 
            varos[index2] = csereVaros;
            lakos[index2] = csereLakos;
            tavolsag[index2] = csereTavolsag;
            megye[index2] = csereMegye; 
            //Kész. Ellenőrzésként írasd ki újra az összes tömböt. 
            kiir(); 
        } 

        //4.feladat: 
        static void negyedik() 
        { 
            //Írjuk ki a Budapesttől legtávolabbi város nevét a képernyőre. 
            Console.WriteLine("A legtávolabbi város Budapesttől: {0}", varos[index2]); 
        } 

        //5.feladat: 
        static void otodik() 
        { 
            //Írjuk ki a legkevesebb lakosú város nevét a képernyőre. 
            Console.WriteLine("A legkevesebb lakosú város: {0}", varos[index]); 
        } 

        //6.feladat: 
        static void hatodik() 
        { 
            //Írjuk ki a 100000 lakosúnál nagyobb városok neveit is, soronként egyet. 
            //Ha nincs ilyen, írjunk ki hibaüzenetet. 
            bool van = false; 
            for (int i = 0; i < varos.Length; i++) 
            { 
                if (lakos[i] > 100000) 
                { 
                    Console.WriteLine(varos[i]); 
                    van = true;                     
                }                
            } 
            if(!van) 
            { 
                Console.WriteLine("Nincs 100.000 lakosúnál nagyobb város."); 
            } 
         } 
//itt folytatjuk
        //7.feladat: 

        static void hetedik() 
        { 
            bool van = false; 
            //Döntsük el, hogy van-e 180 km-nél távolabbi város. Ha találtunk ilyet, 
            //írjuk ki az elsőnek a nevét és a hozzá tartozó km-t. 
            //Ha nincs ilyen, írjunk ki hibaüzenetet. 
            int j = 0; 
            van = false; 
            while (j < tavolsag.Length && !van) 
            { 
                if (tavolsag[j] > 180) 
                { 
                    Console.WriteLine("{0}, Távolsága: {1}km", varos[j], tavolsag[j]); 
                    van = true; 
                } 
                j++; 
            } 

            if (!van) 
            { 
                Console.WriteLine("Nincs 180 km-nél távolabbi város!"); 
            } 
        } 

        //8.feladat: 

        static void nyolcadik() 
        { 
            //Számoljuk meg, és írjuk ki, hogy hány 50000 és 100000 közötti lakosú város van. 
            //Ha nincs ilyen, írjunk ki hibaüzenetet. 
            int db = 0; 
            for (int i = 0; i < lakos.Length; i++) 
            { 
                if (lakos[i] >= 50000 && lakos[i] <= 100000) 
                { 
                    db++; 
                } 
            } 

            if (db != 0) 
            { 
                Console.WriteLine("{0}db 50000 és 100000 közötti lakosú város van.", db); 
            } 
            else 
            { 
                Console.WriteLine("Nincs 50000 és 100000 közötti lakosú város."); 
            } 
        } 

        //9.feladat: 

        static void kilencedik() 
        { 
            //Írjuk ki a városok távolságának átlagát. 
            double osszeg = 0; 
            for (int i = 0; i < tavolsag.Length; i++) 
            { 
                osszeg = osszeg + tavolsag[i]; 
            } 
            Console.WriteLine("A városok távolságának átlaga: {0}", osszeg / 5); 
        } 

        //10.feladat: 
        
        static void tizedik() 
        { 
            //Egy új tömbbe másoljuk át a megyeszékhelyek nevét. Ha nincs ilyen, írjunk ki hibaüzenetet. 
            int j = 0; 
            string[] megyeszekhely = new string[5]; 
            for (int i = 0; i < megye.Length; i++) 
            { 
                if (megye[i] == "Megyeszékhely") 
                { 
                    megyeszekhely[j] = varos[i]; 
                    j++; 
                } 
            } 
            if (j == 0) 
            { 
                Console.WriteLine("Nincs olyan varos, ami megyeszékhely lenne."); 
            }  

            for (int i = 0; i < megyeszekhely.Length; i++) 
            { 
                Console.WriteLine(megyeszekhely[i]); 
            } 
        } 

        //11. feladat: 

        static void tizenegyedik() 
        { 
            //Demonstráld a képernyőn a városok lakosainak számát a következőképpen: 
            //Az első sorba írd ki a város nevét. A következő sorba írj ki 
            //annyi # jelet (egyenként, ciklussal), ahány ezer lakosa van a városnak 
            //(nem baj, ha a jelek a következő sorba is átcsúsznak). 
            //Ismételd ezt meg az összes várossal. 
            //A feladat megoldásához arra van szükség, hogy azon a cikluson belül, 
            //ami végigmegy a városnév tömbön, és kiírja a városok nevét, 
            //indítani kell még egy ciklust, ami meg kiírja a csillagokat. 
            //Használj az első ciklusnak for ciklust, a belső ciklus legyen while ciklus,
            //és nyilván más legyen a ciklusváltozó neve. 
            for (int i = 0; i < varos.Length; i++) 
            { 
                Console.WriteLine(varos[i]); 
                int j = 0; 
                while (j < lakos[i]) 
                { 
                    Console.Write("#"); 
                    j += 1000; 
                } 
                Console.WriteLine(); 
            } 
        } 

        static void Main(string[] args) 
        { 
            Console.WriteLine("1. feladat:"); 
            elso(); 
            Console.ReadLine(); 
            Console.WriteLine("2. feladat:");
            masodik(); 
            Console.ReadLine(); 
            Console.WriteLine("3. feladat:"); 
            harmadik(); 
            Console.ReadLine(); 
            Console.WriteLine("4. feladat:"); 
            negyedik(); 
            Console.ReadLine(); 
            Console.WriteLine("5. feladat:"); 
            otodik(); 
            Console.ReadLine(); 
            Console.WriteLine("6. feladat:"); 
            Console.WriteLine("100.000 lakosúnál nagyobb városok nevei:"); 
            hatodik(); 
            Console.ReadLine(); 
            Console.WriteLine("7. feladat:"); 
            Console.WriteLine("Az első 180km-nél távolabbi város:"); 
            hetedik(); 
            Console.ReadLine(); 
            Console.WriteLine("8. feladat:"); 
            nyolcadik(); 
            Console.ReadLine(); 
            Console.WriteLine("9. feladat:"); 
            kilencedik(); 
            Console.ReadLine(); 
            Console.WriteLine("10. feladat:"); 
            tizedik(); 
            Console.ReadLine(); 
            Console.WriteLine("11. feladat:"); 
            tizenegyedik(); 
            Console.ReadLine(); 
        
        }
    }
}