2017. május 25., csütörtök

2017.05.25. Alap algoritmusok gyakorlása

A lenti megoldást a megosztott algoritmusos feladatlapból emeltük át, tedd be a füzetedbe.
A lenti kódot meg kell érteni, és meg kell tanulni (nem bemagolni!). Tudni kell alkalmazni.
06.01-én témazáró dolgozat lesz belőle, ami elméleti jegy lesz, és papíron írjuk.

            //Kiválasztás tétele
            //Adjuk meg, hogy hányadik a tömbben az 55, és írjuk ki
            //a sorszámát! Ha több is van, csak az elsőt írjuk ki. Ha nincs ilyen szám, írjunk ki hibaüzenetet!
        
            Random rnd = new Random();
            int[] szamok = new int[5];
           
            int i = 0;
            while (i < szamok.Length)
            {
                szamok[i] = rnd.Next(0, 101);
                Console.WriteLine(szamok[i]);
                i++;
            }

            i = 0; //használjuk az i-t, csak nullázni kell
            while (i < szamok.Length && szamok[i] != 55) //végig is tudjon menni, és meg is tudjon állni, ha kell
                                                         // a ciklus feltételében vizsgáljuk a megadott feltétel teljesülését
            {
                i++;
            }
            if (i != szamok.Length)
                Console.WriteLine("A keresett szám (55) a {0}. indexű elem.", i);
            else
                Console.WriteLine("A keresett szám (55) nincs a tömbben!");
            Console.ReadLine();
            ///////////////////////////////////
            //A megszámlálás tétele
            //Számoljuk meg egy tömbben az 50 alatti elemeket! Írjuk ki a végeredményt. (For ciklussal is jó.)
            i = 0;  //használjuk az i-t, csak nullázni kell
            int db = 0;
            while (i < szamok.Length)
            {
                if (szamok[i] < 50)
                {
                    db++;
                }
                i++;
            }
            Console.WriteLine("{0} db 50 alatti szám van a tömbben.", db);
            Console.ReadLine();
            ////////////////////////////////
            //         Az eldöntés tétele
            //Döntsük el, hogy van-e a tömbben 10-nél nagyobb szám. Amennyiben találtunk egyet, a ciklus
            //         álljon meg, és írjuk ki a képernyőre a megtalált elemet. (Nem kell a többit is megkeresni.)
            //         Ha végigmentünk a tömbön, és nem találtunk egyet sem, azt is írjuk ki.
            i = 0; //használjuk az i-t, csak nullázni kell
            bool van = false;
            while (i < szamok.Length && !van)  //végig is tudjon menni, és meg is tudjon állni, ha kell - logikai változóval
            // a ciklus törzsében egy logikai változó segítségével vizsgáljuk a megadott feltétel teljesülését
            {
                if (szamok[i] > 10)
                    van = true;
                i++;
            }
            if (van)
                Console.WriteLine("Van a tömbben 10-nél nagyobb elem: {0}", szamok[i - 1]);
            else
                Console.WriteLine("Nincs a tömbben 10-nél nagyobb elem.");
            Console.ReadLine();
            ////////////////////////////////
            //A kiválogatás tétele
            //Adott két azonos elemszámú tömb. Másoljuk át az első tömbből a másodikba a páros elemeket.

            int[] szamok1 = new int[5];
            int[] szamok2 = new int[5];

            int j = 0; //a második tömb miatt kell
            for (i = 0; i < szamok1.Length; i++)  //itt az i elé nem szabad típusmegadást írni (tehát nem kell az int),
                //mert az i-t már létrehoztuk a főprogramban, és itt a for cikluson belül is látjuk
            {
                if (szamok1[i] % 2 == 0)
                {
                    szamok2[j] = szamok1[i];
                    j++;
                }
            }
            Console.ReadLine();
            ///////////////////////////////
            //Az összegzés tétele
            //Egy tömbben add össze az elemeket. Írd ki a végeredményt.
            int osszeg = 0;

            for (i = 0; i < szamok.Length; i++)
            {
                osszeg = osszeg + szamok[i];
            }
            Console.WriteLine("A tömbelemek összege: {0}", osszeg);
            Console.ReadLine();

            //Változat: Add össze a páros elemeket. Írd ki a végeredményt.
            int parosOsszeg = 0;
            for (i = 0; i < szamok.Length; i++)
            {
                if (szamok[i] % 2 == 0)
                    parosOsszeg = parosOsszeg + szamok[i];
            }
            Console.WriteLine("A páros elemek összege: {0}", parosOsszeg);
            Console.ReadLine();

            //Változat: Szorozd össze az 50-nel osztható elemeket. Írd ki a végeredményt.
            int szorzat = 1;
            van = false;
            for (i = 0; i < szamok.Length; i++)
            {
                if (szamok[i] % 50 == 0)
                {
                    szorzat = szorzat * szamok[i];
                    van = true;
                }
            }
            if (van) //ha nem volt megfelelő szám, akkor 1-et írna ki a program enélkül
            {
                Console.WriteLine("Az 50-nel osztható elemek szorzata: {0}", szorzat);
            }
  
           
            Console.ReadLine();
            //////////////////////////////
            //A minimumkeresés tétele
            //Egy tömbben keresd meg a legkisebb elemet.
            int min = szamok[0];
            for (i = 1; i < szamok.Length; i++)
            {
                if (szamok[i] < min)
                    min = szamok[i];
            }
            Console.WriteLine("A legkisebb elem: {0}", min);
            Console.ReadLine();
            //////////////////////////////////
            //A maximumkeresés tétele
            //Egy tömbben keresd meg a legnagyobb elemet.
            int max = szamok[0];
            for (i = 1; i < szamok.Length; i++)
            {
                if (szamok[i] > max)
                    max = szamok[i];
            }
            Console.WriteLine("A legnagyobb elem: {0}", max);

            Console.ReadLine();