2021.12.01. Alap algoritmusok gyakorlása

 Házi feladat továbbra is az alap algoritmusok gyakorlása. 

1        feladat:

Minden feladatrész előtt a főprogramban írd ki a képernyőre, hogy hányas feladat következik.

2        feladat:

        Hozz létre egy 10 elemű int tömböt.

        Töltsd fel 0 és 90 közötti véletlen számokkal (a 0 és a 90 is benne legyen.)

        Írd ki a tömb tartalmát egy sorba.

3        feladat

        Számold ki, és írd ki a 30-nál kisebb tömbelemek összegét!

4        feladat

        Keresd meg, hogy hányadik  a tömbben a 25, és írd ki a sorszámát (nem az indexét)! Ha nincs benne, írj ki hibaüzenetet. A megoldáshoz használd a kiválasztás tételét.

5        feladat

        Számold meg az 50-nél kisebb elemeket. Írd ki az eredményt. Ha nincs benne, írj ki hibaüzenetet.

6        feladat

        Döntsd el, hogy van-e a tömbben 20 és 30 közötti  szám. Amennyiben találtál egyet, a ciklus álljon meg, és írd ki a képernyőre a megtalált elemet. Ha nincs benne, írj ki hibaüzenetet. A megoldáshoz használd az eldöntés tételét.

7        feladat:

         Hozz létre egy új 10 elemű int tömböt. Ezt a második tömböt töltsd föl sorfolytonosan az első tömb 50 fölötti elemeivel. A megoldáshoz használd a kiválogatás tételét.

        Írd ki a tömb tartalmát egy sorba.

8        feladat:

        Keresd meg az első tömbben a legkisebb elemet, és írd ki a képernyőre az értékét.

2021.11.24. !!!Alap algoritmusok – gyakorlati példák

Végigvettük, házi feladat tanulni az alap algoritmusokat. 

 Alap algoritmusok – gyakorlati példák

A 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!

int i = 0;

while (i < szamok.Length && szamok[i] != 55)

{

    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!");

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ó.)

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);

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.

int i = 0;

bool van = false;

while (i < szamok.Length && !van)

{

    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.");

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. (While ciklussal is jó.)

int j = 0;

for (int i = 0; i < szamok1.Length; i++)

{

    if (szamok1[i] % 2 == 0)

    {

        szamok2[j] = szamok1[i];

        j++;

    }

}

Az összegzés tétele

Egy tömbben add össze az elemeket. Írd ki a végeredményt. (While ciklussal is jó.)

 

int osszeg = 0;

 

for (int i = 0; i < egeszSzamok.Length; i++)

{

    osszeg = osszeg + egeszSzamok[i];

}

Console.WriteLine("A tömbelemek összege: {0}", osszeg);

 

Változat: Add össze a páros elemeket. Írd ki a végeredményt.

int parosOsszeg = 0;

for (int i = 0; i < egeszSzamok.Length; i++)

{

    if (egeszSzamok[i] % 2 == 0)

    {

        parosOsszeg = parosOsszeg + egeszSzamok[i];

     }

}

Console.WriteLine("A páros elemek összege: {0}", parosOsszeg);

 

Változat: Szorozd össze az 50-nel osztható elemeket. Írd ki a végeredményt.

int szorzat = 1;

for (int i = 0; i < egeszSzamok.Length; i++)

{

    if (egeszSzamok[i] % 50 == 0)

    {

        szorzat = szorzat * egeszSzamok[i];

     }

}

if (szorzat != 1)

{

    Console.WriteLine("Az 50-nel osztható elemek szorzata: {0}", szorzat);

}

else

{

    Console.WriteLine("Nem voltak 50-nel osztható elemek!");

}

 

A minimumkeresés tétele

Egy tömbben keresd meg a legkisebb elemet. (While ciklussal is jó.)

int min = tomb[0];

for (int i = 1; i < tomb.Length; i++)

{

    if (tomb[i] < min)

    {

          min = tomb[i];

    }

}

Console.WriteLine("A legkisebb elem: {0}",min);


 

A maximumkeresés tétele

Egy tömbben keresd meg a legnagyobb elemet. (While ciklussal is jó.)

int max = tomb[0];

for (int i = 1; i < tomb.Length; i++)

{

    if (tomb[i] > max)

    {

        max = tomb[i];

    }

}

Console.WriteLine("A legnagyobb elem: {0}",max);

 

 

2021.11.19. Témazáró előtti gyakorlás

Megcsináltuk a mátrixos betűesőt először. 

Ezt házi feladat befejezni.

1. Tárolj tömbben jeleket. (!!+”’()&@# stb.)

2. Tárolj egy másik tömbben kétjegyű véletlen számokat.

3. Ezekből, és véletlenszerű kis-és nagybetűkből alkoss 3 különböző, 5 hosszú PIN kódokat. Írd ki őket a képernyőre.

4. Véletlenszerűen írass ki érdemjegyeket (1-5) addig, amíg ötös nem jön ki. Ekkor írj ki egy gratuláló szöveget.

4. Véletlenszerűen írass ki érdemjegyeket (1-5). Minden esetben kérdezd meg a felhasználót, hogy ez megfelel-e neki programozásból. Ha nem felel meg, menj tovább. Ha megfelel, lépj ki a ciklusból.

5. Kérj be egy pozitív egész számot a usertől. Kezdj el visszafelé számolni ettől a számtól kezdve mínusz 100-ig. Amikor pozitív számot írsz ki a sor elejére, töltsd föl mögötte az adott sort + jelekkel. Ha a nullánál tartasz, írd tele a sort nullával. Ha negatív számot írsz ki, írd tele a képernyőt – jelekkel.

2021.11.17. Gyakorlás

1. Rajzold ki 5* egymásba ágyazott ciklusokkal:

xxxxxxxxxx

    ******

    ******

    ******

    oooooo

    oooooo

    ++++++

    ++++++

    ++++++


2021.11.15.-17. Előző két feladatsor megoldása

 using System;

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

namespace _1115
{
  class Program
  {
    static void Main(string[] args)
    {
      //1.  feladat:
      // A külső ciklus 10-szer fusson le, minden ciklusmagban írja ki,
      //hogy hányadik külső ciklus-lépésben járunk.
      // A belső ciklus 5-ször fusson, (futásonként) írja ki, hogy ő a belső ciklus,
      //és írjon még ki egy véletlenszámot.
      Console.WriteLine("1. feladat");
      int i = 0;
      int j = 0;
      Random rnd = new Random();
      while (i < 10)
      {
        Console.WriteLine("Külső ciklus: {0}", i + 1);
        j = 0;
        while (j < 5)
        {
          Console.WriteLine("                   én vagyok az {0}. belső ciklus: {1}", i+1, rnd.Next());
          j++;
        }


        i++;
      }

      Console.ReadLine();


      //2.  feladat:
      // Módosítsuk az előző feladatot úgy, hogy a külső és a belső ciklus más-más színnel írjon a képernyőre.

      Console.WriteLine("2. feladat");
      i = 0;
      while (i < 10)
      {
        Console.BackgroundColor = ConsoleColor.Red;
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("Külső ciklus: {0}", i + 1);
        j = 0;

        while (j < 5)
        {
          Console.BackgroundColor = ConsoleColor.Black;
          Console.ForegroundColor = ConsoleColor.Green;
          Console.WriteLine("                   én vagyok az {0}. belső ciklus: {1}", i + 1, rnd.Next());
          j++;

        }


        i++;

      }
      Console.ResetColor();
      Console.ReadLine();


      //3.  feladat:
      // Lépésenkénti futtatással vizsgáljuk meg a ciklusok működését.


      //4.  feladat:
      // Hozz létre egy 20 elemű string tömböt, melyben 10 számjegyből álló titkos kódokat fogsz tárolni.
      // Külső ciklus:
      //•  menj végig minden tömbelemen;
      //•  helyezz el a tömbelemben egy stringgé alakított véletlen számjegyet;
      // Belső ciklus, ami 9-szer ismétlődik:
      //•  lépésenként adj hozzá a tömbelem aktuális tartalmához egy, a fenti módon
      //stringgé alakított véletlen számjegyet úgy, hogy egy stringet alkossanak.
      // A belső ciklusból kilépve listázd ki a képernyőre a tömböt.

      Console.WriteLine("4. feladat");
      string[] titkos = new string[20];
      i = 0;
      while (i < 20)
      {
        titkos[i] = Convert.ToString(rnd.Next(0, 10));
        j = 0;
        while (j < 9)
        {
          titkos[i] = titkos[i] + Convert.ToString(rnd.Next(0, 10));
          j++;
        }
        Console.WriteLine(titkos[i]);
        i++;
      }
      Console.ReadLine();





      //5.  feladat:
      //–  Oldd meg, hogy a listázás a ciklusok futása közben megvalósuljon,
      //ehhez keresd meg azt a helyet, ahová a kiírást el kell helyezni.

      Console.WriteLine("5. feladat");
      i = 0;
      string elem = string.Empty;
      while (i < 20)
      {
        titkos[i] = Convert.ToString(rnd.Next(0, 10));
        j = 0;
        Console.WriteLine(titkos[i]);
        while (j < 9)
        {
          elem=Convert.ToString(rnd.Next(0, 10));
          Console.Write(elem);
          titkos[i] = titkos[i] + elem;
          j++;

        }
        Console.WriteLine();
        i++;
      }
      Console.ReadLine();
      //6.  feladat:
      // Az órai munka minden feladatát futtasd lépésenként, vizsgáld a műveleteket, változókat.

      Console.WriteLine("6. feladat");

      //7.  feladat:
      // Ismételd meg tízszer a Beep() metódus segítségével a Morse SOS (. . . – – – . . .) jelet
      //(a harmadik leckében találsz hozzá segítséget).
      //A külső ciklus 10-szer fusson, ezen belül fusson 3 belső ciklus.
      //Az első ismételje 3-szor a rövid hangot; a második ismételje 3-szor a hosszú hangot,
      //a harmadik ugyanaz, mint az első.
      //Módosítás: ne hangot adjon a program, hanem írja ki a jeleket.

      Console.WriteLine("7. feladat");

      i = 0;
     
      int s;
      int o;

      //2 feladat:
      //− Ismételd meg tízszer a Beep() metódus segítségével a Morse SOS(. . . – – – . . .) jelet(a harmadik leckében találsz hozzá segítséget).A külső ciklus 10 - szer fusson, ezen belül fusson 3 belső ciklus. Az első ismételje 3 - szor a rövid hangot; a második ismételje 3 - szor a hosszú hangot,  a harmadik ugyanaz, mint az első.
      i = 0;
      while (i < 10)
      {
        j = 0;
        while (j < 3)
        {
          Console.Beep(500, 100);
          Console.Write(".");
          j++;
        }
        Thread.Sleep(100);
        s = 0;
        while (s < 3)
        {
          Console.Beep(500, 500);
          Console.Write("-");
          s++;
        }
        Thread.Sleep(100);
        o = 0;
        while (o < 3)
        {
          Console.Beep(500, 100);
          Console.Write(".");
          o++;
        }
        Thread.Sleep(100);
        Console.WriteLine();
        i++;
      }


      //8.  feladat:
      //–  Hangokkal kódold le a végén a TITANIC szót (ehhez ne használj ciklust)

      Console.WriteLine("8. feladat");


      Console.ReadLine();
    }
  }
}

2021.11.12. -15. Egymásba ágyazott ciklusok – Gyakorlás

Következő órán befejezzük. 

Egymásba ágyazott ciklusok – Gyakorlás

1        feladat:

        Az órai munka minden feladatát futtasd lépésenként, vizsgáld a műveleteket, változókat.

2        feladat:

        Ismételd meg tízszer a Beep() metódus segítségével a Morse SOS (. . . – – – . . .) jelet (a harmadik leckében találsz hozzá segítséget). A külső ciklus 10-szer fusson, ezen belül fusson 3 belső ciklus. Az első ismételje 3-szor a rövid hangot; a második ismételje 3-szor a hosszú hangot,  a harmadik ugyanaz, mint az első.

3        szorgalmi feladat:

        Hangokkal kódold le a végén a TITANIC szót (ehhez ne használj ciklust :)

2021.11.10. Egymásba ágyazott ciklusok

 

Házi feladat: befejezni a feladatsort.

Egymásba ágyazott ciklusok

1        feladat:

        A külső ciklus 10-szer fusson le, minden ciklusmagban írja ki, hogy hányadik külső ciklus-lépésben járunk.

        A belső ciklus 5-ször fusson, (futásonként) írja ki, hogy ő a belső ciklus, és írjon még ki egy véletlenszámot.

2        feladat:

        Módosítsuk az előző feladatot úgy, hogy a külső és a belső ciklus más-más színnel írjon a képernyőre.

3        feladat:

        Lépésenkénti futtatással vizsgáljuk meg a ciklusok működését.

4        feladat:

        Hozz létre egy 20 elemű string tömböt, melyben 10 számjegyből álló titkos kódokat fogsz tárolni.

        Külső ciklus:

        menj végig minden tömbelemen;

        helyezz el a tömbelemben egy stringgé alakított véletlen számjegyet;

        Belső ciklus, ami 10-szer ismétlődik:

        lépésenként adj hozzá a tömbelem aktuális tartalmához egy, a fenti módon  stringgé alakított véletlen számjegyet úgy, hogy egy stringet alkossanak.

        A külső ciklusból kilépve listázd ki a képernyőre a tömböt.


//5.  feladat:

            //–  Oldd meg, hogy a listázás a ciklusok futása közben megvalósuljon,

            //ehhez keresd meg azt a helyet, ahová a kiírást el kell helyezni.

            Console.WriteLine("5. feladat");

            //6.  feladat:

            // Az órai munka minden feladatát futtasd lépésenként, vizsgáld a műveleteket, változókat.

 

2021.11.08. While ciklus gyakorlás

 //1.feladat:

            //Írjunk végtelen ciklust, ami „végtelenszer” kiírja, hogy „Úgyse lépek ki :)

 

            //2.feladat:

            //Kérd be a felhasználótól, hogy hány nap múlva lesz az uniós pályázat beadási határideje.

            //Számolj visszafelé egyesével 1-ig, az aktuális értéket írd ki a képernyőre.

//Amikor eljött a határidő napja, írd ki, hogy ma van a határidő napja.

            

            //3.feladat:

            //Középiskolák pályázhattak hardver beszerzésre. A teljes pályázati összeg 10 millió forint.

            //Százezer, kétszázezer, háromszázezer forintokra lehetett pályázni.

            //Modellezzük az iskolák igényét úgy, hogy a százezer forintot véletlenül szorozzuk be

            //cikluslépésenként 1-2-3-mal.

            //A ciklus addig megy, amíg el nem fogy minden pénz.

            //Minden cikluslépésben írd ki, hogy mennyi pénz van még.

            //Ha a végén mínuszba ment, a ciklus után írd ki, hogy az utolsó pályázónak

            //mennyi maradt, valójában azt kapja meg. 

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

namespace betuk
{
  class Program
  {
    static void Main(string[] args)
    {
      //While ciklus gyakorlás
    //1.feladat:
    //Írjunk végtelen ciklust, ami „végtelenszer” kiírja, hogy „Úgyse lépek ki :)

    //2.feladat:
    //Kérd be a felhasználótól, hogy hány nap múlva lesz az uniós pályázat beadási határideje.
    //Számolj visszafelé egyesével 1-ig, az aktuális értéket írd ki a képernyőre.
    //Amikor eljött a határidő napja, írd ki, hogy ma van a határidő napja.
            Console.WriteLine("Hány nap múlva van a határidő?");
      int nap = Convert.ToInt32(Console.ReadLine());
      while (nap > 0)
      {
        Console.WriteLine("{0} nap van még.", nap);
        nap--;
      }
      Console.WriteLine("Ma van a határidő napja.");


    //3.feladat:
    //Középiskolák pályázhattak hardver beszerzésre. A teljes pályázati összeg 10 millió forint.
    //Százezer, kétszázezer, háromszázezer forintokra lehetett pályázni.
    //Modellezzük az iskolák igényét úgy, hogy a százezer forintot véletlenül szorozzuk be
    //cikluslépésenként 1-2-3-mal.
    //A ciklus addig megy, amíg el nem fogy minden pénz.
    //Minden cikluslépésben írd ki, hogy mennyi pénz van még.
    //Ha a végén mínuszba ment, a ciklus után írd ki, hogy az utolsó pályázónak
    //mennyi maradt, valójában azt kapja meg.

    //megoldás:
      Random rnd = new Random();
      double maxOsszeg = 10000000;
      double aktualisIskolaOsszeg = 0;
      int i = 0;
      while (maxOsszeg > 0)
      {
        aktualisIskolaOsszeg = 100000 * rnd.Next(1, 4);
        if ((maxOsszeg - aktualisIskolaOsszeg) > 0)
        {
          maxOsszeg = maxOsszeg - aktualisIskolaOsszeg;
          Console.WriteLine("A(z) {0}. iskola nyert {1} forintot. Maradt még:{2}Ft!", i + 1, aktualisIskolaOsszeg, maxOsszeg);
        }
        else
        {
          if ((maxOsszeg - aktualisIskolaOsszeg) == 0)
          {
            maxOsszeg = 0;
            Console.WriteLine("A(z) {0}. iskola nyert {1} forintot. Maradt még:{2}Ft!", i + 1, aktualisIskolaOsszeg, maxOsszeg);
          }
          else //akkor kisebb
          {
            Console.WriteLine("A(z) {0}. iskola nyert {1} forintot. Maradt még:{2}Ft!", i + 1, maxOsszeg, 0);
            maxOsszeg = 0;
          }

        }
        i++;

      }
      Console.ReadLine();

 
    }
  }
}


2023.04.26. Javító feladatsor