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(5, 11);
        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.

2021.10.11. Témazáró

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

Továbbra is házi feladat az előző.

Ezt is be kell fejezni.

 

1. feladat

-        Kérj be egy -100 és 100 közötti egész számot a usertől.

-        Írd ki a képernyőre, hogy helyesen írta-e be, vagy helytelenül.

-        Ha a beírt szám negatív, szorozd meg -1-gyel.

-        Szorozd meg ezt a számot 15-ször frissen képzett 0 és 3 közötti véletlenszámmal, a részeredményeket tárold egy tömbben.


2. feladat

-        A tömb tartalmát foreach ciklussal írd ki a képernyőre.

-        Hozz létre egy 1000 elemű tömböt tört számok tárolására.

-        Töltsd föl a tömböt 0 és 50 közötti véletlen egész számokkal.

Menj végig a tömbön, és amelyik elem 30-nál nagyobb, ott adj egy hangjelzést!


3. feladat

a, Tölts föl egy 50 elemű tömböt 37 és 32767 közötti véletlenszámokkal. Ezek fogják jelenteni a hangmagasságot. (A Beep() ezzel az intervallummal képes működni, bővíteni nem lehet, de szűkítheted tetszés szerint.)

b, Tölts föl egy 50 elemű tömböt 100 és 2000 közötti véletlenszámokkal. Ezek fogják jelenteni az időtartamot. (Ezt az intervallumot bővítheted.)

c, Szólaltass meg 50 hangot, köztük szünetekkel, amely hangok a hangmagasságot, illetve az időt a fenti tömbökből veszik.


4. Hozz létre egy 1000 elemű tömböt tört számok tárolására. Töltsd föl a tömböt 0 és 50 közötti véletlen egész számokkal.

Foreach ciklussal írasd ki a képernyőre a tömb tartalmát, minden szám 6 hosszon jelenjen meg.

5. Add össze a 7-tel osztható tömbelemeket!

6. Kérj be egy 0 és 1 közötti tört számot a usertől. Nem kell vizsgálnod, jól írta-e be. Szorozd meg ezt a számot 10-szer frissen képzett kicsi, 0 és 10 közötti véletlenszámmal. (Tehát minden cikluslépésben újabb véletlenszámmal szorozz!)

Riki megoldása alapján:
using System;

namespace ConsoleApp15
{
  class Program
  {
    static void Main(string[] args)
    {
      //      1.feladat

      //- Kérj be egy -100 és 100 közötti egész számot a usertől.
      Console.Write("Adj meg egy számot -100 és 100 között(egész szám legyen): ");
      int egeszSzam = Convert.ToInt32(Console.ReadLine());

      //- Írd ki a képernyőre, hogy helyesen írta - e be, vagy helytelenül.

      //-Ha a beírt szám negatív, szorozd meg - 1 - gyel.
      if (egeszSzam >= -100 && egeszSzam <= 100)
      {
        Console.WriteLine("Helyesen írtad be");
      }
      else
      {

        Console.WriteLine("Helytelenül írtad be");
      }



      int[] tomb1 = new int[15];
      Random rnd = new Random();
      if (egeszSzam < 0)
      {
        egeszSzam = egeszSzam * -1;
      }
      for (int i = 0; i < tomb1.Length; i++)
      {
        tomb1[i] = rnd.Next(0, 4) * egeszSzam;
      }

      //- Szorozd meg ezt a számot 15 - ször frissen képzett 0 és 3 közötti véletlenszámmal, a részeredményeket tárold egy tömbben.


      //2.feladat

      //- A tömb tartalmát foreach ciklussal írd ki a képernyőre.
      foreach (var x in tomb1)
      {
        Console.WriteLine(x);
      }

      //-Hozz létre egy 1000 elemű tömböt tört számok tárolására.
      double[] tomb2 = new double[1000];
      for (int i = 0; i < tomb2.Length; i++)
      {
        tomb2[i] = rnd.Next(0, 51);

        if (tomb2[i] > 30)
        {
          Console.Beep(654, 832);
        }
      }

      //- Töltsd föl a tömböt 0 és 50 közötti véletlen egész számokkal.

      //Menj végig a tömbön, és amelyik elem 30 - nál nagyobb, ott adj egy hangjelzést!


      //  3.feladat

      //a, Tölts föl egy 50 elemű tömböt 37 és 32767 közötti véletlenszámokkal. Ezek fogják jelenteni a hangmagasságot. (A Beep() ezzel az intervallummal képes működni, bővíteni nem lehet, de szűkítheted tetszés szerint.)
      int[] tomb3 = new int[50];
      for (int i = 0; i < tomb3.Length; i++)
      {
        tomb3[i] = rnd.Next(37, 32768);
      }

      //b, Tölts föl egy 50 elemű tömböt 100 és 2000 közötti véletlenszámokkal. Ezek fogják jelenteni az időtartamot. (Ezt az intervallumot bővítheted.)
      int[] tomb4 = new int[50];
      for (int i = 0; i < tomb4.Length; i++)
      {
        tomb4[i] = rnd.Next(100, 2001);
      }

      //c, Szólaltass meg 50 hangot, köztük szünetekkel, amely hangok a hangmagasságot, illetve az időt a fenti tömbökből veszik.
      for (int i = 0; i < 50; i++)
      {
        Console.Beep(tomb3[i], tomb4[i]);
      }

      //4.Hozz létre egy 1000 elemű tömböt tört számok tárolására.Töltsd föl a tömböt 0 és 50 közötti véletlen egész számokkal.
      double[] tomb5 = new double[1000];
      for (int i = 0; i < tomb5.Length; i++)
      {
        tomb5[i] = rnd.Next(0, 51);
      }

      //Foreach ciklussal írasd ki a képernyőre a tömb tartalmát, minden szám 6 hosszon jelenjen meg.
      foreach (var x in tomb5)
      {
        Console.WriteLine("{0,6}", x);
      }

      //5.Add össze a 7 - tel osztható tömbelemeket!
      double hetOszthato = 0;
      for (int i = 0; i < tomb5.Length; i++)
      {
        if (tomb5[i] % 7 == 0)
        {
          hetOszthato = hetOszthato + tomb5[i];
        }
      }

      // 6.Kérj be egy 0 és 1 közötti tört számot a usertől.Nem kell vizsgálnod, jól írta-e be.
      //Szorozd meg ezt a számot 10 - szer frissen képzett kicsi, 
      //0 és 10 közötti véletlenszámmal. (Tehát minden cikluslépésben újabb véletlenszámmal szorozz!)
      Console.WriteLine("Adj meg egy tört számot 0 és 1 között: ");
      double tortSzam = Convert.ToDouble(Console.ReadLine());

      for (int i = 0; i < 10; i++)
      {
        Console.WriteLine(tortSzam*rnd.Next(11));
      }
      Console.ReadLine();

    }
  }
}


2023.04.26. Javító feladatsor