2017. június 27., kedd

2017.06.27. Nyári gyakorlat 3. nap: OOP

Objektumorientált programszerkezet

namespace oopBevezetes
{
    //Az objektum-orientált programszerkezet bevezetése
    //Hozzunk létre saját osztályt.
    //Az osztályban hozzunk létre saját metódusokat,
    //melyekben a tömbbe adatbekérés, és a kiírás parancsait
    //valósítjuk meg.

    class sajatOsztaly //saját osztály definiálása
    {
        public int[] szamok = new int[10];
        public void szovegKiiro()//a metódusokat public kulcsszóval itt helyezzük el
        {
            Console.WriteLine("Hello, én az osztály belsejében lévő kiírás vagyok.");
        }
        public void tombBekero()
        {
            Console.WriteLine("A tömbbe fogok bekérni számokat.");
            for (int j = 0; j < szamok.Length; j++)
            {
                Console.WriteLine("Kérek egy egész számot: ");
                szamok[j] = Convert.ToInt32(Console.ReadLine());
            }
        }

        public void tombKiiro()
        {
            Console.WriteLine("A tömb tartalma: ");
            foreach (int x in szamok)
            {
                Console.WriteLine(x);
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            sajatOsztaly s = new sajatOsztaly();
            //itt példányosítottunk az osztályunkból
            //egy példányt, hogy használni tudjuk a metódusait
            //(lefoglaltunk neki helyet a memóriában)

            Console.WriteLine("Hello, én a főprogramban lévő kiírás vagyok.");
            s.szovegKiiro(); //a példányunk metódusait így érjük el
            s.tombBekero();
            s.tombKiiro();
            Console.WriteLine("A kilépéshez nyomjon meg egy billentyűt.");
            Console.ReadLine();
            Console.WriteLine("By-by!");
            Thread.Sleep(1000);
        }
    }
}


2017.06.27. Nyári gyakorlat 3. nap: Fájlkezelés

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; //ezt pótolni kell!

namespace fajlkezeles
{
    class Program
    {
        static int[] szamTomb = new int[10];

        static void kiiras()
        {
            for (int i = 0; i < szamTomb.Length; i++)
            {
                Console.WriteLine(szamTomb[i]);
            }
        }

        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader("szamok.txt"); //olvasásra megnyitjuk a fájlt
            int i = 0;
            while (!sr.EndOfStream) //addig megyünk, míg vége nincs a fájlnak
            {
                szamTomb[i]= Convert.ToInt32(sr.ReadLine()); //egyszerre egy sort beolvasunk, konvertálunk és beteszünk a tömbbe
                i++;
            }
            sr.Close(); //lezárjuk a fájlt: KÖTELEZŐ ELEM!

            kiiras();

            StreamWriter sw = new StreamWriter("dupla.txt"); //írásra megnyitunk egy fájlt; ha eddig nem létezett, létre is hozza
            for (int j = 0; j < szamTomb.Length; j++)
            {
                sw.WriteLine(szamTomb[j]*2); //írunk a fájlba soronként
            }
            sw.Close(); //lezárjuk a fájlt: KÖTELEZŐ ELEM!

            Console.ReadLine();
        }
    }

}

2017.06.27. Nyári gyakorlat 3. nap: Alap algoritmusok gyakorlása metódusokban

1. feladatsor

namespace kivalasztasTetele
{
    class Program
    {
        static int[] szamok = new int[10];
        static void bekeres()
        {
            for (int j = 0; j < szamok.Length; j++)
            {
                Console.Write("Kérek egy egész számot: ");
                szamok[j] = Convert.ToInt32(Console.ReadLine());
            }
        }

        static void kiiras()
        {
            foreach (object x in szamok)
            {
                Console.WriteLine(x);
            }
        }

        //Kiválasztás tétele:
        //A tömbben keressünk meg egy adott tulajdonságú elemet,
        //és adjuk meg az indexét!
        //Ha több ilyen is van, akkor csak az elsőt adjuk meg!
        //Ha nincs ilyen, írjunk ki hibaüzenetet!

        //1.feladat: Adjuk meg, hogy hanyadik 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!
        //Használjunk elöltesztelő ciklust.
        static void kivalasztas1()
        {
            int i = 0;
            while (i < szamok.Length && szamok[i] != 55)
            {
                i++;
            }
            //Mennyi most az 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!");
        }

        //2. feladat: Adjuk meg, hogy hanyadik a tömbben a 100,
        //é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!
        //Használjunk elöl tesztelő ciklust.
        static void kivalasztas2()
        {
            int i = 0;
            while (i < szamok.Length && szamok[i] != 100)
            {
                i++;
            }

            if (i != szamok.Length)
                Console.WriteLine("A keresett szám (100) a {0}. indexű elem.", i);
            else
                Console.WriteLine("A keresett szám (100) nincs a tömbben!");
        }

        //3. feladat: Adjuk meg, hogy hanyadik a tömbben az
        //első 5-tel osztható elem,
        //és írjuk ki a sorszámát!
        //Ha nincs ilyen szám, írjunk ki hibaüzenetet!
        //Használjunk elöl tesztelő ciklust.
        static void kivalasztas3()
        {
            int i = 0;
            while (i < szamok.Length && szamok[i] % 5 != 0)
            {
                i++;
            }
            if (i != szamok.Length)
                Console.WriteLine("A keresett szám (az első 5-tel osztható elem) a {0}. indexű elem.", i);
            else
                Console.WriteLine("A keresett szám (5-tel osztható elem) nincs a tömbben!");
        }

        static void Main(string[] args)
        {
            bekeres();
            kiiras();
            kivalasztas1();
            kivalasztas2();
            kivalasztas3();
            Console.ReadLine();
        }
    }
}



2. feladatsor

namespace megszamlalasTetele
{
    class Program
    {  
        //1. feladat:
        //   Hozzunk létre egy 100 elemű tömböt, melyet 0 és 100 közötti véletlenszámokkkal töltünk fel.
        //   Számoljuk meg az 50 alatti elemeket.
        static int[] szamok = new int[100];
        static Random rnd=new Random();

        static void feltoltes()
        {
            for (int j = 0; j < szamok.Length; j++)
            {
                szamok[j] = rnd.Next(0,101);;
            }
        }

        static void kiiras()
        {
            foreach (int x in szamok)
            {
                Console.WriteLine(x);
            }
        }
              
        static void megszamlalas1()
        {
            int i = 0;
            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);
        }
        //2. feladat:
        //   Ugyanezen tömbben számoljuk meg a 10-zel osztható elemeket. Ha egy ilyen elem sincs, írjunk ki hibaüzenetet!
        static void megszamlalas2()
        {
            int i = 0;
            int db = 0;
            while (i < szamok.Length)
            {
                if (szamok[i] %10 == 0)
                   {
                             db++;
                   }
                i++;
            }
            if (db>0)
                Console.WriteLine("{0} db 10-zel osztható szám van a tömbben.", db);           
            else
                Console.WriteLine("Nincs 10-zel osztható szám a tömbben.");
        }              
       
        //3. feladat:
        //   Hozzunk létre egy 10 elemű karaktertömböt. Töltsük fel billentyűzetről karakterekkel.
        //   Számoljuk meg azokat az elemeket, melyek a ’k’ betűnél később szerepelnek a kódtáblában.
        static char[] karakter = new char[10];
        static void bekeres()
        {
            for (int j = 0; j < karakter.Length; j++)
            {
                Console.Write("Kérek egy karaktert: ");
                karakter[j] = Convert.ToChar(Console.ReadLine());
            }
        }

        static void kiiras1()
        {
            foreach (char x in karakter)
            {
                Console.WriteLine(x);
            }
        }

        static void megszamlalas3()
        {
            int i = 0;
            int db = 0;
            while (i < karakter.Length)
            {
                if (karakter[i] > 'k')
                   {
                    db++;
                   }
                i++;
            }
            if (db>0)
                Console.WriteLine("{0} db karakter van a k után.", db);         
            else
                Console.WriteLine("Nincs a k után karakter a tömbben.");
        }     

        //4. feladat:
        //   Számoljuk meg azokat az elemeket, amelyet a 100-as kód után vannak.
        //(Egy karakter kódjának megadása típuskényszerítéssel: (int) ’L’)
        static void megszamlalas4()
        {
            int i = 0;
            int db = 0;
            while (i < karakter.Length)
            {
                if ((int) karakter[i] > 100)
                {
                    db++;
                }
                i++;
            }
            if (db > 0)
                Console.WriteLine("{0} db karakter van az 100-as kódú karakter (d) után.", db);
            else
                Console.WriteLine("Nincs a 100-asnál nagyobb kódú karakter a tömbben.");
        }
        static void Main(string[] args)
        {
            Console.WriteLine("1. feladat");
            feltoltes();
            kiiras();
            megszamlalas1();
            Console.ReadLine();
            Console.WriteLine("2. feladat");
            megszamlalas2();
            Console.ReadLine();
            Console.WriteLine("3. feladat");
            bekeres();
            kiiras1();
            megszamlalas3();
            Console.ReadLine();
            Console.WriteLine("4. feladat");
            megszamlalas4();
            Console.ReadLine();
        }
    }
}

3. feladatsor

namespace eldontesTetele
{
    class Program
    {
        //        Döntsük el, hogy egy tömb, vagy sorozat tartalmaz-e adott tulajdonságú elemet!      

        static int[] szamok = new int[100];
        static Random rnd = new Random();


        static void tombFeltoltes()
        {
            int i = 0;
            while (i < szamok.Length)
            {
                szamok[i] = rnd.Next(1000);
                i++;
            }
        }


        static void kiiras()
        {
            for (int i = 0; i < szamok.Length; i++)
            {
                Console.WriteLine("{0}. elem: {1}", i + 1, szamok[i]);
            }
        }

        //1.      feladat:
        //-        Hozzunk létre egy 100 elemű int tömböt.
        //-        Töltsük fel 0 és 1000 közötti véletlen számokkal.
        //-        Döntsük el, hogy van-e a tömbben 900-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.
        static void eldontes()
        {
            int i = 0;
            bool van = false;

            while (i < szamok.Length && !van)
            {
                if (szamok[i] > 900)
                    van = true;
                /* Console.Write("{0}. elem: {1}", i + 1, szamok[i]);
                 Console.WriteLine(van); */
                i++;
            }
            if (van)
                Console.WriteLine("Van a tömbben 900-nál nagyobb elem.");
            else
                Console.WriteLine("Nincs a tömbben 900-nál nagyobb elem.");
        }

        //2.      feladat:
        //-        Hozzunk létre egy 5 elemű string tömböt.
        //-        Kérjünk be 5 autómárkát, és helyezzük el a tömbben.
        //-        Döntsük el, hogy benne van-e a tömbben a Mercedes márka. Amennyiben találtunk egyet,
        //a ciklus álljon meg, és írjuk ki a képernyőre a megtalált elem indexét. (Nem kell tovább keresni.)
        //-        Ha végigmentünk a tömbön, és nem találtunk egyet sem, azt is írjuk ki.

        static string[] auto = new string[5];

        static void autoBekeres()
        {
            for (int i = 0; i < auto.Length; i++)
            {
                Console.WriteLine("Kérek egy autómárkát: ");
                auto[i] = Console.ReadLine();
            }
        }


        static void autoKiiras()
        {
            for (int i = 0; i < auto.Length; i++)
            {
                Console.WriteLine("{0}. elem: {1}", i + 1, auto[i]);
            }
        }


        static void eldontesAuto()
        {
            int i = 0;
            bool van = false;

            while (i < szamok.Length && !van)
            {
                if (auto[i] == "Mercedes")
                    van = true;
                /* Console.Write("{0}. elem: {1}", i + 1, szamok[i]);
                 Console.WriteLine(van);*/
                i++;
            }
            if (van)
                Console.WriteLine("Van a tömbben Mercedes, a(z) {0} indexű elem.", i-1);
            else
                Console.WriteLine("Nincs a tömbben Mercedes.");
        }

        //3.      feladat:
        //-        Hozzunk létre egy 500 elemű double tömböt.
        //-        Töltsük fel (0 és 1 közötti) double típusú véletlen számokkal.
        //-        Döntsük el, hogy van-e a tömbben  nulla. Amennyiben találtunk egyet, a ciklus álljon meg
        //és írjuk ki a képernyőre a megtalált elem indexét. (Nem kell tovább keresni.)
        //Ha végigmentünk a tömbön, és nem találtunk egyet sem, azt is írjuk ki.
        static double[] tortSzamok = new double[500];

        static void tortTombFeltoltes()
        {
            int i = 0;
            while (i < tortSzamok.Length)
            {
                tortSzamok[i] = rnd.NextDouble();
                i++;
            }
        }


        static void tortKiiras()
        {
            for (int i = 0; i < tortSzamok.Length; i++)
            {
                Console.WriteLine("{0}. elem: {1}", i + 1, tortSzamok[i]);
            }
        }


        static void eldontesTort()
        {
            int i = 0;
            bool van = false;

            while (i < tortSzamok.Length && !van)
            {
                if (tortSzamok[i] == 0)
                    van = true;
                /* Console.Write("{0}. elem: {1}", i + 1, szamok[i]);
                 Console.WriteLine(van); */
                i++;
            }
            if (van)
                Console.WriteLine("Van a tömbben 0, a(z) {0} indexű elem.", i - 1);
            else
                Console.WriteLine("Nincs a tömbben 0.");
        }

        static void Main(string[] args)
        {
            Console.WriteLine("1. feladat");
            tombFeltoltes();
            kiiras();
            Console.ReadLine();
            eldontes();
            Console.ReadLine();
            Console.WriteLine("2. feladat");
            autoBekeres();
            autoKiiras();
            Console.ReadLine();
            eldontesAuto();
            Console.ReadLine();
            Console.WriteLine("3. feladat");
            tortTombFeltoltes();
            tortKiiras();
            Console.ReadLine();
            eldontesTort();
            Console.ReadLine();
        }
    }
}

4. feladatsor

namespace kivalogatasTetele
{
    class Program
    {
        //A kiválogatás tétele
        //Válogassunk ki adott tulajdonságú elemeket egy tömbből, vagy sorozatból egy másik tömbbe.     
       
      
        //1. feladat:
        //    Hozzunk létre két 10 elemű byte tömböt.
        //    Az elsőt töltsük fel 50 és 100 közötti véletlen számokkal.
        //    Másoljuk át az elsőből a második tömbbe a páros elemeket.
        static byte[] szamok1 = new byte[10];
        static byte[] szamok2 = new byte[10];
        static Random rnd = new Random();

        static void feltolt()
        {
            for (int i = 0; i < szamok1.Length; i++)
            {
                szamok1[i] = Convert.ToByte(rnd.Next(50,100));
            }
        }

        static void kiir1()
        {
            for (int i = 0; i < szamok1.Length; i++)
            {
                Console.WriteLine(szamok1[i]);
            }
        }

        static void kiir2()
        {
            for (int i = 0; i < szamok2.Length; i++)
            {
                Console.WriteLine(szamok2[i]);
            }
        }

        static void kivalogatas1()
        {
            int j = 0;
            for (int i = 0; i < szamok1.Length; i++)
            {
                if (szamok1[i] % 2 == 0)
                {
                    szamok2[j] = szamok1[i];
                    j++;
                }
            }
        }


        //2.feladat:
        //    Hozzunk létre két 10 elemű karakter tömböt.
        //    Töltsük fel az elsőt billentyűzetről.
        //    Másoljuk át a második tömbbe azokat a karaktereket, amelyet az ABC-ben az ’m’ betű után vannak.

        static char[] karakter1 = new char[10];
        static char[] karakter2 = new char[10];
     
        static void feltoltKarakter()
        {
            for (int i = 0; i < karakter1.Length; i++)
            {
                Console.Write("Kérek egy karaktert: ");
                karakter1[i] = Convert.ToChar(Console.ReadLine());
            }
        }

        static void kiirKarakter2()
        {
            for (int i = 0; i < karakter2.Length; i++)
            {
                Console.WriteLine(karakter2[i]);
            }
        }

        static void kivalogatas2()
        {
            int j = 0;
            for (int i = 0; i < karakter1.Length; i++)
            {
                if (karakter1[i] > 'm')
                {
                    karakter2[j] = karakter1[i];
                    j++;
                }
            }
        }


        //3. feladat:
        //    Hozzunk létre két 5 elemű string tömböt.
        //    Töltsük fel az elsőt billentyűzetről.
        //    Másoljuk át a második tömbbe azokat a stringeket, amely 5-nél hosszabbak.

        static string[] szoveg1 = new string[5];
        static string[] szoveg2 = new string[5];

        static void feltoltSzoveg()
        {
            for (int i = 0; i < szoveg1.Length; i++)
            {
                Console.Write("Kérek egy szót: ");
                szoveg1[i] = Console.ReadLine();
            }
        }

        static void kiirSzoveg2()
        {
            for (int i = 0; i < szoveg2.Length; i++)
            {
                Console.WriteLine(szoveg2[i]);
            }
        }

        static void kivalogatas3()
        {
            int j = 0;
            for (int i = 0; i < szoveg1.Length; i++)
            {
                if (szoveg1[i].Length > 5 )
                {
                    szoveg2[j] = szoveg1[i];
                    j++;
                }
            }
        }

        static void Main(string[] args)       
        {
            Console.WriteLine("1. feladat");
            feltolt();
            Console.WriteLine("1. tömb:");
            kiir1();
            kivalogatas1();
            Console.WriteLine("2. tömb:");
            kiir2();
            Console.ReadLine();


            Console.WriteLine("2. feladat");
            feltoltKarakter();
            kivalogatas2();
            Console.WriteLine("2. tömb:");
            kiirKarakter2();
            Console.ReadLine();


            Console.WriteLine("3. feladat");
            feltoltSzoveg();
            kivalogatas3();
            Console.WriteLine("2. tömb:");
            kiirSzoveg2();
            Console.ReadLine();
        }
    }
}