2021.11.03. While ciklus gyakorlás

Házi feladat volt befejezni.

A végét még megbeszéljük. Házi feladat a megoldást megtanulni.

Figyelem, egymásba ágyazott ciklus is van benne.

//While ciklus gyakorlás

//A következő feladatokban a tömböket a feltöltés után mindig listázd ki a képernyőre.

//Tudnivalók: az ASCII táblában a betűk kódjainak határa:

// nagy betűk: 65-90

// kis betűk: 97-122

 

//1.feladat:

// Hozz létre egy 26 elemű karaktertömböt nagyBetu néven.

// Töltsd föl az angol ABC nagybetűivel.

 

//2.feladat:

// Hozz létre egy 26 elemű karaktertömböt kisBetu néven.

// Töltsd föl az angol ABC kisbetűivel.

 

//3.feladat:

// Hozz létre egy 2*26=52 elemű karaktertömböt osszesbetu néven.

// Másold át ebbe a tömbbe az előző két tömb tartalmát egymás után.

 

//4.feladat:

// Hozz létre egy 26 elemű string tömböt betuParok néven.

// Töltsd föl a következőképpen: a kisBetu tömb 0. eleméhez

//add hozzá a nagyBetu tomb 0. elemét úgy,

 //hogy egy stringet alkossanak: „Aa”;

 //majd ezt a stringet tedd bele a betuParok tömbbe.

//Ismételd meg ezt a többi elemmel is.

 

//5.feladat:

// Hozz létre egy 100 elemű karaktertömböt szazKisBetu néven.

//Töltsd föl véletlenül kiválasztott kisbetűkkel.

 

//6.feladat:

// Hozz létre egy 10 elemű string tömböt, melyben 3 számjegyből álló

//titkos kódokat fogsz tárolni.

// Töltsd föl a következőképpen: alakíts stringgé egy véletlen számjegyet,

//és adj hozzá még kettő ilyet úgy, hogy egy stringet alkossanak. (Pl.: 341, 593)

 

//7. feladat:

//Oldd meg a 6-os feladatot azzal a változtatással,

//hogy öt hosszú legyen a titkos kód.

//Az első helyen egy véletlen számjegy álljon,

//aztán egy véletlen kisbetű, aztán egy véletlen nagybetű,

//végül egy véletlen kétjegyű szám. (Pl.: 3hZ71)

 

//8. feladat:

//Készíts 8 hosszú titkos kódot, melyben kisbetű, nagybetű, szám, és egyéb jelek is vannak.

//Szóköz, ékezetes karakter nem lehet benne. Segítségül használd a 7 bites ASCII táblát.

//Pl.: fT!jq/d+

 

//9. feladat:

//Alkoss a kisBetu tömb elemeiből négybetűs szavakat, melyeket nem kell tárolni, csak kiírni a képernyőre.

//Minden egyes szó kiírása után kérdezd meg a usert, hogy értelmes-e a szó.

//Számold meg, hány értelmes szót sikerült alkotni, és az eredményt írd ki a képernyőre.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace betuk
{
  class Program
  {
    static void Main(string[] args)
    {//A következő feladatokban a tömböket a feltöltés után mindig listázd ki a képernyőre.
     //Tudnivalók: az ASCII táblában a betűk kódjainak határa:
     // nagy betűk: 65-90
     // kis betűk: 97-122


      //1.feladat:
      // Hozz létre egy 26 elemű karaktertömböt nagyBetu néven.
      // Töltsd föl az angol ABC nagybetűivel.
      Console.WriteLine("1.feladat.");
      char[] nagyBetu = new char[26];
      int i = 0;
      while (i < 26)
      {
        nagyBetu[i] = Convert.ToChar(i + 65);
        Console.WriteLine(nagyBetu[i]);
        i++;
      }

      Console.Clear();

      //2.feladat:
      // Hozz létre egy 26 elemű karaktertömböt kisBetu néven.
      // Töltsd föl az angol ABC kisbetűivel.
      Console.WriteLine("2.feladat.");
      char[] kisBetu = new char[26];
      i = 0;
      while (i < 26)
      {
        kisBetu[i] = Convert.ToChar(i + 97);
        Console.WriteLine(kisBetu[i]);
        i++;
      }


      Console.ReadLine();
      Console.Clear();

      //3.feladat:
      // Hozz létre egy 2*26=52 elemű karaktertömböt osszesbetu néven.
      // Másold át ebbe a tömbbe az előző két tömb tartalmát egymás után.
      Console.WriteLine("3.feladat.");
      char[] osszesBetu = new char[52];
      i = 0;
      while (i < 26)
      {
        osszesBetu[i] = nagyBetu[i];
        Console.WriteLine(osszesBetu[i]);
        i++;

      }
      while (i < 52)
      {
        osszesBetu[i] = kisBetu[i - 26];
        Console.WriteLine(osszesBetu[i]);
        i++;


      }

      Console.ReadLine();
      Console.Clear();
      //4.feladat:
      // Hozz létre egy 26 elemű string tömböt betuParok néven.
      // Töltsd föl a következőképpen: a kisBetu tömb 0. eleméhez
      //add hozzá a nagyBetu tomb 0. elemét úgy,
      //hogy egy stringet alkossanak: „Aa”;
      //majd ezt a stringet tedd bele a betuParok tömbbe.
      //Ismételd meg ezt a többi elemmel is.
      Console.WriteLine("4.feladat.");
      string[] betuParok = new string[26];
      i = 0;
      while (i < 26)
      {

        betuParok[i] = Convert.ToString(nagyBetu[i]) + Convert.ToString(kisBetu[i]);

        Console.WriteLine(betuParok[i]);
        i++;
      }


      Console.ReadLine();
      Console.Clear();



      //5.feladat:
      // Hozz létre egy 100 elemű karaktertömböt szazKisBetu néven.
      //Töltsd föl véletlenül kiválasztott kisbetűkkel.


      Console.WriteLine("5.feladat.");
      Random rnd = new Random();
      char[] szazKisBetu = new char[100];
      i = 0;

      while (i < 100)
      {
        Console.Write("{0}. sorszám: ", i + 1);

        szazKisBetu[i] = kisBetu[rnd.Next(0, 26)];
        Console.WriteLine(szazKisBetu[i]);
        i++;

      }



      Console.ReadLine();
      Console.Clear();

      //6.feladat:

      // Hozz létre egy 10 elemű string tömböt, melyben 3 számjegyből álló
      //titkos kódokat fogsz tárolni.
      // Töltsd föl a következőképpen: alakíts stringgé egy véletlen számjegyet,
      //és adj hozzá még kettő ilyet úgy, hogy egy stringet alkossanak. (Pl.: 341, 593)
      Console.WriteLine("6.feladat.");

      string[] szamjegy = new string[10];
      i = 0;
      while (i < 10)
      {

        szamjegy[i] = Convert.ToString(rnd.Next(0, 10)) + Convert.ToString(rnd.Next(0, 10)) + Convert.ToString(rnd.Next(0, 10));
        Console.WriteLine(szamjegy[i]);
        i++;

      }

      Console.ReadLine();
      Console.Clear();
      //7. feladat:
      //Oldd meg a 6-os feladatot azzal a változtatással,
      //hogy öt hosszú legyen a titkos kód.
      //Az első helyen egy véletlen számjegy álljon,
      //aztán egy véletlen kisbetű, aztán egy véletlen nagybetű,
      //végül egy véletlen kétjegyű szám. (Pl.: 3hZ71)

      Console.WriteLine("7.feladat.");
      string[] szamjegy2 = new string[10];
      i = 0;

      while (i < 10)
      {

        szamjegy2[i] = Convert.ToString(rnd.Next(0, 10)) + kisBetu[rnd.Next(0, 26)] + nagyBetu[rnd.Next(0, 26)] + Convert.ToString(rnd.Next(10, 100));
        Console.WriteLine(szamjegy2[i]);
        i++;

      }

      Console.ReadLine();
      Console.Clear();
      //8. feladat:
      //Készíts 8 hosszú titkos kódot, melyben kisbetű, nagybetű, szám, és egyéb jelek is vannak.
      //Szóköz, ékezetes karakter nem lehet benne. Segítségül használd a 7 bites ASCII táblát.
      //Pl.: fT!jq/d+

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

      string[] asci = new string[10];
      i = 0;
      while (i < 10)
      {
        asci[i] = Convert.ToString(Convert.ToChar(rnd.Next(33, 126))) + Convert.ToString(Convert.ToChar(rnd.Next(33, 126)))
                + Convert.ToString(Convert.ToChar(rnd.Next(33, 126))) + Convert.ToString(Convert.ToChar(rnd.Next(33, 126)))
                + Convert.ToString(Convert.ToChar(rnd.Next(33, 126))) + Convert.ToString(Convert.ToChar(rnd.Next(33, 126)))
                + Convert.ToString(Convert.ToChar(rnd.Next(33, 126))) + Convert.ToString(Convert.ToChar(rnd.Next(33, 126)));
        Console.WriteLine(asci[i]);
        i++;
      }


      Console.ReadLine();
      Console.Clear();

      Console.WriteLine("8.feladat - 2. verzió");
      string[] ascii = new string[10];
      i = 0;
      int j;
      while (i < 10)
      {
        j = 0;
        while (j < 8)
        {
          ascii[i] = ascii[i] + Convert.ToString(Convert.ToChar(rnd.Next(33, 126)));
          j++;
        }
        Console.WriteLine(ascii[i]);
        i++;
      }

      Console.ReadLine();
      Console.Clear();

      //9. feladat:
      //Alkoss a kisBetu tömb elemeiből négybetűs szavakat, melyeket nem kell tárolni, csak kiírni a képernyőre.
      //Minden egyes szó kiírása után kérdezd meg a usert, hogy értelmes-e a szó.
      //Számold meg, hány értelmes szót sikerült alkotni, és az eredményt írd ki a képernyőre.
      Console.WriteLine("9.feladat.");
      i = 0;
      string valasz;
      int db = 0;
      while (i < 10)
      {


        Console.Write(kisBetu[rnd.Next(0, 26)]);
        Console.Write(kisBetu[rnd.Next(0, 26)]);
        Console.Write(kisBetu[rnd.Next(0, 26)]);
        Console.Write(kisBetu[rnd.Next(0, 26)]);
        Console.WriteLine();
        i++;
        Console.Write("Értelmes szó ez? (i/n): ");
        valasz = Console.ReadLine();

        if (valasz == "i")
        {
          db++;
        }
      }

      Console.WriteLine("Értelmes szavak száma : {0}", db);
      Console.ReadLine();
      Console.Clear();

      Console.WriteLine("9.feladat. - 2. verzió");
      i = 0;
      db = 0;
      while (i < 10)
      {
        j = 0;
        while (j < 4)
        {
          Console.Write(kisBetu[rnd.Next(0, 26)]);
          j++;
        }
        Console.WriteLine();
        i++;
        Console.Write("Értelmes szó ez? (i/n): ");
        valasz = Console.ReadLine();

        if (valasz == "i")
        {
          db++;
        }
      }

      Console.WriteLine("Értelmes szavak száma : {0}", db);
      Console.ReadLine();
    }
  }
}


2021.10.18. Házi feladat

 

Játékos kiírás ciklussal

1. Mit csinál ez a kód?

2. Alakítsd át úgy, hogy a for ciklust cseréld le while ciklusra.  

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace kiiro

{

    class Program

    {

        static void Main(string[] args)

        {

            for (int i = 0; i < 80; i++)

            {

                Console.Write("*");

            }

            Console.ReadLine();

            Console.Clear();

            int sor = 0;

            int oszlop = 0;

            for (int i = 0; i < 80; i++)

            {

                Console.SetCursorPosition(oszlop,sor );

                Console.Write("*");

                oszlop++;

                sor++;

 

            } 

            Console.ReadLine();

            Console.Clear();

 

            sor = 0;

            oszlop = 79;

            for (int i = 0; i < 80; i++)

            {

                Console.SetCursorPosition(oszlop, sor);

                Console.Write("*");

                oszlop--;

                sor++;

 

            }

            Console.ReadLine();

        }

    }

}

            int i = 0;

            while ( i < 80)

            {

                Console.Write("*");

                i++;

            }

            Console.ReadLine();

            Console.Clear();

            int sor = 0;

            int oszlop = 0;

            i = 0;

            while (i < 80)

            {

                Console.SetCursorPosition(oszlop, sor);

                Console.Write("*");

                oszlop++;

                sor++;

            i++;

 

            }

            Console.ReadLine();

            Console.Clear();

 

            sor = 0;

            oszlop = 79;

            i=0;

            while (i < 80)

            {

                Console.SetCursorPosition(oszlop, sor);

                Console.Write("*");

                oszlop--;

                sor++;

                i++;

 

            }


2021.10.18. While – gyakorló feladat

 While – gyakorló feladat

1        feladat:

        Kérd be a felhasználótól, hogy hány nap múlva lesz vége a tanévnek.

        Számolj visszafelé egyesével 1-ig, az aktuális értéket írd ki a képernyőre (élesben naponta egyet kellene kiírni).

2        feladat:

Monitorokat szállítasz ki a raktárból.

        A kezdőkészlet értékét kérd be.

        A ciklus addig megy, amíg el nem fogy minden monitor.

        Minden cikluslépésben csökkents a készletet egy 5 és 10 közötti véletlenszámmal.

        Minden cikluslépésben írd ki, hogy hány darab monitor van még. (A végén figyelj, hogy ne menj mínuszba.)

//2.    feladat:
      //Monitorokat szállítasz ki a raktárból.
      //-     A kezdőkészlet értékét kérd be (darabszám).

      Console.Write("Ennyi monitor van a raktárban: ");
      int db = Convert.ToInt32(Console.ReadLine());

      //-     A ciklus addig megy, amíg el nem fogy minden monitor.
      //-     Minden cikluslépésben csökkents a készletet egy 5 és 10 közötti véletlenszámmal.
      //                          - Minden cikluslépésben írd ki, hogy hány darab monitor van még.
      //                              (A végén figyelj, hogy ne menj mínuszba.)

      Random rnd = new Random();

      int kivonas = 0;

      while (db > 0)
      {

        kivonas = rnd.Next(511);
        db -= kivonas;
        Console.WriteLine("Ennyi monitort szeretnék a raktárból vételezni: {0}", kivonas); //ez nem volt feladat, de tesztelésre jó

        if (db < 0)
          db = 0;

        Console.WriteLine("Még {0} db monitor van raktáron.", db);
      }

2021.10.13.-15. While ciklus bevezetés


//While ciklus bevezetés

//Feladat: Töltsünk fel egy 10 elemű

//int tömböt véletlen számokkal!

Console.WriteLine("Tömb létrehozása...");

int[] szamok = new int[10];

Random rnd = new Random();

 

//Megoldás for ciklussal (plusz kiírás):

Console.WriteLine("Feltöltés, kiírás for ciklussal:");

for (int k = 0; k < szamok.Length; k++)

{

    szamok[k] = rnd.Next(100);

    Console.WriteLine(szamok[k]);

}

Console.ReadLine();

//Megoldás while ciklussal (plusz kiírás):

//(i: itt is ciklusváltozó)

Console.WriteLine("Feltöltés, kiírás while ciklussal:");

int i = 0;

while (i < szamok.Length)

{

    szamok[i] = rnd.Next(100);

    Console.WriteLine(szamok[i]);

    i++;

}

Console.ReadLine();

//Összegzés tétele for ciklussal:

 

//Összegzés tétele while ciklussal: 

 

//Gyakorló feladatok while ciklusra:

//1. feladat:

//Írjuk ki az első 100 természetes számot

//a képernyőre! (0,1,2,3...98,99)

 

//2. feladat:

//Írjuk ki az első 100 darab 2-vel osztható

//természetes számot

//a képernyőre! (0,2,4...)

 

//3. feladat:

//Írjuk ki az első 10 darab 10-zel osztható

//természetes számot

//a képernyőre!

 

//4. feladat:

//Kérjünk be karaktereket a felhasználótól

//egy 5 elemű tömbbe!

 

//5. feladat:

//Addig írjuk ki a képernyőre a számokat egyesével

//százegytől indulva, amíg nem találunk egy olyan számot,

//ami osztható 23-mal.

 

//6. feladat:

//Addig írjuk ki a képernyőre a számokat egyesével

//20-tól indulva, amíg nem találunk egy olyan számot,

//ami osztható 3-mal, 4-gyel, és 5-tel is.

//(3*4*5=60 előtt kell neki megállni.)

//Tehát a for ciklusnál rugalmasabb ciklus abból a szempontból,

//hogy nincs előre meghatározva a lépésszáma.

 namespace whileCiklusBevezetes

{

    class Program

    {

        static void Main(string[] args)

        {

             //While ciklus bevezetés

            //Feladat: Töltsünk fel egy 10 elemű

            //int tömböt véletlen számokkal!

            Console.WriteLine("Tömb létrehozása...");

            int[] szamok = new int[10];

            Random rnd = new Random();

 

            //Megoldás for ciklussal (plusz kiírás):

            Console.WriteLine("Feltöltés, kiírás for ciklussal:");

            for (int k = 0; k < szamok.Length; k++)

            {

                szamok[k] = rnd.Next(100);

                Console.WriteLine(szamok[k]);

            }

            Console.ReadLine();

            //Megoldás while ciklussal (plusz kiírás):

            //(i: itt is ciklusváltozó)

            Console.WriteLine("Feltöltés, kiírás while ciklussal:");

            int i = 0;

            while (i < szamok.Length)

            {

                szamok[i] = rnd.Next(100);

                Console.WriteLine(szamok[i]);

                i++;

            }

            Console.ReadLine();

            //Összegzés tétele for ciklussal:

            Console.WriteLine("Összegzés for ciklussal:");

            int osszeg = 0;

            for (int m = 0; m < szamok.Length; m++)

            {

                osszeg = osszeg + szamok[m];

            }

            Console.WriteLine("Összeg for ciklussal: {0}", osszeg);

 

            //Összegzés tétele while ciklussal: 

            Console.WriteLine("Összegzés while ciklussal:");

            osszeg = 0;

            i = 0;

            while (i < szamok.Length)

            {

                osszeg = osszeg + szamok[i];

                i++;

            }

            Console.WriteLine("Összeg while ciklussal: {0}", osszeg);

            Console.ReadLine();

            //Gyakorló feladatok while ciklusra:

 

            //1. feladat:

            //Írjuk ki az első 100 természetes számot

            //a képernyőre! (0,1,2,3...98,99)

            Console.WriteLine("Az első 100 természetes szám következik:");

            Console.ReadLine();

            i = 0;

            while (i < 100) //Nullától 99-ig, tehát 100-szor fut

            {

                Console.WriteLine(i); //ha a ciklusváltozót íratjuk ki, pont jó lesz

                i++;

            }

            //Itt használhatjuk a ciklusváltozót a kiíráshoz, ez nem mindig ilyen egyszerű.

            //Ha ennél összetettebb a feladat, akkor érdemes lehet egy új változót bevezetni, később lesz erre még példa.

            Console.ReadLine();

            //2. feladat:

            //Írjuk ki az első 100 darab 2-vel osztható

            //természetes számot

            //a képernyőre! (0,2,4...)

            Console.WriteLine("Az első 100 darab 2-vel osztható természetes szám következik:");

            Console.ReadLine();

            i = 0;

            int db = 0;

            while (db < 100) //itt arra koncentrálunk, hogy biztos pontosan 100-szor fusson

                //ezért nem jó az i, mert 100-nál több számot kell végignéznünk egyesével

                //és az i-t arra használjuk, hogy ezeken végigmenjünk

            {

                if (i % 2 == 0)

                {

                    Console.WriteLine(i);

                    db++; //csak akkor emeljük ezt az értéket, ha tényleg találtunk egy feltételnek megfelelő számot

                }

                i++; //mivel minden számot meg kell nézni, egyesével növeljük az i-t

            }

            Console.ReadLine();

            //3. feladat:

            //Írjuk ki az első 10 darab 10-zel osztható

            //természetes számot

            //a képernyőre!

            //(Nagyon hasonlít az előzőre.)

            Console.WriteLine("Az első 10 10-zel osztható természetes szám következik:");

            Console.ReadLine();

            i = 0;

            db = 0;

            while (db < 10)

            {

                if (i % 10 == 0)

                {

                    Console.WriteLine(i);

                    db++;

                }

                i++;

            }

            Console.ReadLine();

            //4. feladat:

            //Kérjünk be karaktereket a felhasználótól

            //egy 5 elemű tömbbe!

            Console.WriteLine("5 karakter bekérése következik.");

            char[] karakterek = new char[5];

            i = 0;

            while (i < karakterek.Length)

            {

                Console.WriteLine("Kérek egy karaktert!");

                karakterek[i] = Convert.ToChar(Console.ReadLine());

                i++;

            }

            Console.ReadLine();

 

            //5. feladat:

            //Addig írjuk ki a képernyőre a számokat egyesével

            //százegytől indulva, amíg nem találunk egy olyan számot,

            //ami osztható 23-mal.

            Console.WriteLine("Ami 23-mal osztható, azt már nem írjuk ide:");

            Console.ReadLine();

            i = 101; //itt beállítjuk a kezdőértéket, az első számot; amit először ki kell írni

            while (!(i % 23 == 0)) //addig menjen, amíg MÉG NEM talált a feltételnek megfelelőt

                //1. a feltételt könnyen meg tudjuk fogalmazni, mert az oszthatóságot könnyen kiszámoljuk

                //2. eztán már csak tagadni kell, hogy fusson az a ciklus...

            {

                Console.WriteLine(i); //mivel egyesével minden számot ki kell írni, használhatjuk a ciklusváltozót

                i++;

            }

            Console.ReadLine();

 

            //6. feladat:

            //Addig írjuk ki a képernyőre a számokat egyesével

            //20-tól indulva, amíg nem találunk egy olyan számot,

            //ami osztható 3-mal, 4-gyel, és 5-tel is.

            //(3*4*5=60 előtt kell neki megállni.)

            Console.WriteLine("Ami osztható 3-mal, 4-gyel, és 5-tel is, előtte megállunk:");

            Console.ReadLine();

            i = 20;

            while (!(i % 3 == 0 && i % 4 == 0 && i % 5 == 0))

                //mint az előző feladat, csak összetett a feltétel

                //1. fogalmazzuk meg úgy, mintha csak a 3-mal oszthatóságot kellene figyelni

                //2. találjuk ki, milyen logikai operátor (művelet) kell ahhoz, hogy együtt legyen igaz a 3-mal, és a 4-gyel való oszthatóság, ez az:&&

                //3. bővítsük ki az utolsó résszel

                //4. tagadjuk, hogy addig fusson a ciklus, míg ilyet nem talál

            {

                Console.WriteLine(i);

                i++;

            }

            Console.ReadLine();

            //Tehát a for ciklusnál rugalmasabb ciklus abból a szempontból,

            //hogy nincs előre meghatározva a lépésszáma.

2023.04.26. Javító feladatsor