Logo

Főoldal

Blog

Elmélet

3D Studio

Adatvédelmi nyilatkozat

GY.I.K.

Házirend

Szerző: Marosi Csaba / marosi.csaba@3d-studio.hu

DiscordGitHubLinkedIn
Developedia
Developedia
/Feladatgyűjtemény
Feladatgyűjtemény
/Vezérlési szerkezetek
Vezérlési szerkezetek
Vezérlési szerkezetek

Vezérlési szerkezetek

Az alábbi feladatok megoldhatók Unity-n belül, de akár C# parancssori alkalmazásban is.

‣
Ha a Unity-n belül MonoBehaviour komponensként készíted el a megoldást, akkor…

Szükséged van a megfelelő programkönyvtárra (névtérre). Tehát a file elején mindenképp írd ki: using UnityEngine;

Ekkor a bemenő értékek beolvasását végezheted a [SerializeField] tagváltozókkal.

A kimenő adatokat pedig kiírathatod Debug.Log() metódus segítségével vagy felvehetsz erre a célra is [SerializeField] tagváltozókat.

A Unity matematikai könyvtárát Mathf néven éred el.

Ne feledd el, hogy megírt MonoBehaviour scripteket, hozzá kell adni egy GameObject-hez!

‣
Ha a parancssori C# alkalmazáson belül készíted el a megoldást, akkor…

Szükséged van a megfelelő programkönyvtárra (névtérre). Tehát a file elején mindenképp írd ki: using System;

Ekkor a bemenő értékek beolvasását végezheted a Console.ReadLine() metódussal.

A kimenő adatokat pedig kiírathatod Console.WriteLine() segítségével.

A C# matematikai könyvtárát Math néven éred el.

using UnityEngine;

‣
A megoldások némelyikében használom az OnValidate() Unity üzenetmetódust.

Ehelyett használhatsz Start() metódust is, ami az objektum létrejöttekor fut le.

Vagy, olvasd el az OnValidate()-ről szóló elméleti leckét: Az OnValidate metódusAz OnValidate metódus.

‣
Paritás teszt szövegesen

Írj programot, ami, bemenete egy egész szám és az alapján elkészít egy string-et, ami szövegesen tartalmazza, hogy a bemeneti szám páros, vagy páratlan!

‣
Megoldás (Parancssori)
‣
Megoldás (Unity komponens)
‣
Számolás

Írj programot, aminek a bemenete egy egész szám number néven! A program kiírja a számokat 1-től number-ig.

‣
Megoldás (Parancssori)
// Beolvasás:
Console.WriteLine("Insert an integer number!");
string line = Console.ReadLine();
int number = int.Parse(line);


// Kiíratás:
int i = 1;
while (i <= number)
{
    Console.WriteLine(i);
    i++;
}


// Ugyanez for ciklussal
for (int j = 1; j < number; j++)
{
    Console.WriteLine(j);
}
‣
Megoldás (Unity komponens)
using UnityEngine;

class Counter : MonoBehaviour
{
    [SerializeField] int number;     // Bemeneti változó
    
    void Start()
    {
			
			// While ciklussal:
			int i = 1;
			while (i <= number)
			{
				Console.WriteLine(i);
				i++;
			}
			
			// For ciklussal
			for (int j = 1; j < number; j++)
			{
			    Debug.Log(j);
			}
    }
}
‣
Számolás szövegbe

Írj programot, aminek a bemenete egy egész szám number néven! A program készít EGY string-et a számokból 1-től number-ig vesszővel elválasztva őket, majd kiírja ezt a string-et a konzolra.

‣
Példa

Bemenet: 6

Kimenet: "1, 2, 3, 4, 5, 6"

‣
Megoldás (Parancssori)
‣
Megoldás (Unity komponens)
‣
Több szám átlaga (Csak parancssori alkalmazásként megoldható)

Írj programot, ami addig olvas be egész számokat a konzolról, amíg a felhasználó be nem írja a

“vége” szót! Ekkor a program pontosan kiírja a beírt számok átlagát.

‣
Összegzés

Írj programot, ami bemenete egy egész szám number néven. A program kiszámolja az első number darab pozitív egész szám összegét!

‣
Példák:
  • number = 3 eredmény = 1 + 2 + 3 = 6
  • number = 6 eredmény = 1 + 2 + 3 + 4 + 5 + 6 = 21
  • number = 10 eredmény = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
‣
Megoldás (Unity komponens)
using UnityEngine;

class SumOfNumbers: MonoBehaviour
{
    [SerializeField] int number;        // Bemenet
    [SerializeField] int sum;           // Kimenet

    void OnValidate()
    {
        sum = 0;    // Nulla értékkel kezdünk

        for (int i = 1; i <= number; i++)
            sum += i; 
    }
}
‣
Megoldás (Parancssori)
// Beolvasás
Console.WriteLine("Insert the Number!");
string line = Console.ReadLine();
int number = int.Parse(line);

// Száítások elvégzése
int summa = 0;    // Nulla értékkel kezdünk

for (int i = 1; i <= number; i++)
    summa += i;

// Kiíratás
Console.WriteLine("Summa: " + summa);
‣
Páratlanok összegzése

Írj programot, ami bemenete egy egész szám number néven és kiszámolja az első number darab páratlan szám összegét és átlagát!

‣
Példa

number = 6

summa = 1 + 3 + 5 + 7 + 9 + 11 = 36

mean = 36 / 6 = 6

‣
Megoldás (Parancssori)
// Beolvasás
Console.WriteLine("Insert the Number!");
string line = Console.ReadLine();
int number = int.Parse(line);

// Száítások elvégzése
int summa = 0;    // Nulla értékkel kezdünk

for (int i = 0; i < number; i++)
    summa += i;

// Kiíratás
Console.WriteLine("Summa: " + summa);
‣
Megoldás (Unity komponens)
class SumOfEvens : MonoBehaviour
{
	[SerializeField] int number;     // Bemeneti változó
	    
	// Kimeneti változók:
	[SerializeField] int summa;
	[SerializeField] int mean;
	    
	void OnValidate()
	{
		summa = 0;    // Nulla értékkel kezdünk
		
		for (int i = 0; i < number; i++)        
			summa += 1 + (2 * i);
		
		mean = summa / number;
	}
}
‣
Min Max keresés

Írj programot ami 2 számot kér a bemenetről, majd kiírja a kisebbiket és a nagyobbikat.

‣
Megoldás (Unity komponens)
class MinMax: MonoBehaviour
{
    [SerializeField] int number1, number2;  // Bemenet
    [SerializeField] int min, max;          // Kimenet
    
    
    void OnValidate()
    {
        if (number1 > number2)
        {
            min = number2;
            max = number1;
        }
        else
        {
            min = number1;
            max = number2;
        }
    }
}
‣
Megoldás (Parancssori)
‣
Min Max keresés több számra

Írj programot, aminek a bemenete 5 lebegőpontos szám, majd ezek közül kiszámolja a legnagyobbat és a legkisebbet!

‣
Megoldás (Parancssori)
‣
Megoldás (Unity komponens)
‣
FizzBuzz

Írj programot, aminek a bemenete egy egész szám number néven!

A programot kiírja a számokat a konzolra 1-től number-ig, de…

  • Ha a szám 3 többszöröse, a szám helyett: "Fizz"-t írjon!
  • Ha a szám 5 többszöröse, akkor "Buzz"-t írjon!
  • Ha a szám 3 és 5 többszöröse is, akkor "FizzBuzz"-t írjon!
  • Minden egyéb esetben a számot magát írja ki!
‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Hatványozás

Írj programot, aminek két bemenete van! Mindkettő egész szám:

  • baseNumber (alap)
  • exponent (kitevő)

A program számolja ki baseNumber szám exponent-edik hatványát!

Elég, ha a megoldás csak nem negatív egész kitevő (exponent) esetén működik.

⚠️ Ne használj egyéb metódust a megoldáshoz! ⚠️

‣
Példa

baseNumber = 3

exponent = 4

végeredmény = 34=3∗3∗3∗3=813^4 = 3 * 3 * 3 * 3 = 8134=3∗3∗3∗3=81

‣
Megoldás (Parancssori)
‣
Megoldás (Unity komponens)
class LeastCommonMultiple : MonoBehaviour
{
    // Bemenetek
    [SerializeField] int baseNumber = 1;
    [SerializeField, Min(0)] int exponent = 1;  

    // Kimenet
    [SerializeField] int power;  
    
    void OnValidate()
    {
        power = 1;

        for (int i = 0; i < exponent; i++)
            power *= baseNumber; 
    }
}
‣
Hatványok összege

Írj programot, aminek két bemenete van! Mindkettő egész szám:

  • baseNumber (alap)
  • count (darabszám)

A program kiszámolja a baseNumber első count darab hatványának összegét a 0-dik hatványtól kezdve.

Elég, ha a megoldás csak nem negatív egész kitevő (exponent) esetén működik.

‣
Példa

baseNumber = 3, exponent = 4

Végeredmény =30+31+32+33=1+3+9+27=40=3^0 +3^1 +3^2 +3^3 = 1 + 3 + 9 + 27 = 40=30+31+32+33=1+3+9+27=40

‣
Megoldás (Parancssori)
‣
Megoldás (Unity komponens)
‣
Prímteszt

Írj programot, ami egy bemeneti egész számról eldönti és kiírja, hogy prím-e.

‣
Megoldás (Unity komponens)
‣
Megoldás (Parancssori)
‣
Egyszerű szorzótábla

Írj programot, ami a bemeneten kap egy egész számot kiírja a megadott szám szorzótábláját 1-től 10-ig.

‣
Példa

Bemenet: 13

Konzolra kiírandó szöveg:

1 * 13 = 13 2 * 13 = 26 3 * 13 = 39 ... 10 * 13 = 130

‣
Megoldás (Unity komponens)
class SimpleMultiplicationTable : MonoBehaviour
{
    [SerializeField] int number; // Bemeneti változó 
    
    void Start()
    {
        for (int i = 1; i <= 10; i++)
            Debug.Log($"{i} * {number} = {i * number}");
    }
}
‣
Megoldás (Parancssori)
// Beolvasás:
Console.WriteLine("Insert the Number!");
string line1 = Console.ReadLine();
int number = int.Parse(line1);

// Kiiratás
for (int i = 1; i <= 10; i++)
    Console.WriteLine($"{i} * {number} = {i * number}");
‣
Szorzótábla

Írj programot, ami kiírja a szorzótáblát!

‣
Elvárt kimenet

1 * 1 = 1 2 * 1 = 2 … 9 * 10 = 90 10 * 10 = 100

‣
Megoldás (Unity komponens)
class MultiplicationTable: MonoBehaviour
{
	void Start()
	{
		// Két egymásba ágyazott for ciklussal oldom meg a problémát.
		for (int i = 1; i <= 10; i++)
		{
			for (int j = 1; j <= 10; j++)
			{
				Debug.Log($"{i} * {j} = {i * j}");
			}
		}
	}
}
‣
Megoldás (Parancssori)
// Két egymásba ágyazott for ciklussal oldom meg a problémát.
for (int i = 1; i <= 10; i++)
{
	for (int j = 1; j <= 10; j++)
	{
		Console.WriteLine($"{i} * {j} = {i * j}");
	}
}
‣
Legkisebb közös többszörös

Írj programot, ami két bemeneti egész számnak kiszámolja a legkisebb közös többszörösét!

‣
Megoldás (Unity komponens)
class LeastCommonMultiple : MonoBehaviour
{
	[SerializeField, Min(1)] int a, b;            // Bemenő adatok
	[SerializeField] int leastCommonMultiple;     // Kimenő adat
	
	void OnValidate()
	{	 
		int min = Mathf.Min(a, b);
		int max = Mathf.Max(a, b);
		leastCommonMultiple = max * 2;
		
		while (leastCommonMultiple % min != 0)
		{
			leastCommonMultiple += max;
		} 
	}
}
‣
Megoldás (Parancssori)
‣
Egyszerű fegyver

Írj Unity MonoBehaviour komponenst, ami egy fegyvert reprezentál!

A komponensnek 3 beállítása van:

  1. Betöltött lőszerek száma
  2. Meglévő tárak száma
  3. Töltények száma 1 tárban

A komponens működése: Ha megnyomjuk a lövés (space) gombot, akkor…

  • Ha van lőszer ”betöltve”, akkor kiírja, hogy “Bumm” és csökken a lőszerek száma.
  • Ha elfogy a betöltött lőszer, akkor kiírja, hogy “Klikk” és megpróbál újratölteni:
    • Ha van szabad tár, akkor elhasznál belőle egyet és újratölti vele a fegyvert:
      • Eggyel kevesebb tárunk lesz.
      • A betöltött lőszerek száma annyi lesz, amennyi lőszer van egy tárban.
    • Ha elfogyott a lőszer, és szabad tárunk sincs, akkor nem tudunk újratölteni.
‣
Megoldás (Unity komponens)
‣
Automata fegyver

Írj Unity MonoBehaviour komponenst, ami egy fegyvert reprezentál!

A komponensnek 5 beállítása van:

  1. Automata-e a fegyver? (Gépfegyver-e)
  2. Betöltött lőszerek száma
  3. Meglévő tárak száma
  4. Töltények száma 1 tárban
  5. Mennyi idő kell az utolsó lövés után, hogy újra tudjunk lőni. (Cooldown)

A komponens 2 inputra figyel:

  • Bal egérgomb: Lövés
  • Jobb egérgomb: Feltöltés

A komponens működése:

  • Ha automata a fegyver, akkor a lövés gomb nyomva tartására folyamatosan lő.
  • Ha NEM automata a fegyver, akkor a lövés gomb lenyomására egyszer lő.
  • Csak akkor tudunk lőni, ha letelt a minimum idő az előző lövés után.
  • Csak akkor tudunk lőni, ha van lőszer ”betöltve”
  • Ha tudunk lőni, akkor kiírja, hogy “Bumm” és eggyel csökken a betöltött lőszerek száma.
  • Ha nem tudunk lőni, kiírja, hogy “Klikk”.
  • Ha lenyomjuk a feltöltés gombot és van szabad tár, akkor elhasznál belőle egyet és újra tölti vele a fegyvert:
    • Eggyel kevesebb tárunk lesz.
    • A betöltött lőszerek száma annyi lesz, amennyi lőszer van egy tárban.
    • Kiírja, hogy “Feltölt”.
  • Ha elfogyott a szabad tárunk sincs, akkor nem tudunk újra tölteni.
‣
Megoldás (Unity komponens)
‣
1-től 100-ig ha…

Írj programot, ami kiírja 1 és 100 közt az összes olyan számot, amire igaz, hogy osztható 3-mal vagy 7-tel.

‣
Megoldás
class From1To100: MonoBehaviour
{
    void Start()
    {
        for (int i = 1; i <= 100; i++)      // 1-től 100-ig léptetjük i értékét
        {
            if (i % 3 == 0 || i % 7 == 0) // Ha találtunk egy helyes megoldást...
                Debug.Log(i);             // Kiírjuk a számot.
        }
    }
}
‣
1-től 200-ig ha…

Írj programoz, ami kiírja 1 és 200 közt az összes olyan számot, amire igaz, hogy osztható 3-mal.

class From1To100: MonoBehaviour
{
    void Start()
    {
     // 3-től 200-ig léptetjük i értékét 3-anklént
        for (int i = 3; i <= 200; i+=3)  
        {
					Debug.Log(i);             // Kiírjuk a számot.
        }
    }
}
‣
Első 100 darab

Írj programoz, ami kiírja az első 100 olyan pozitív egész számot, amire igaz, hogy osztható 3-mal vagy 7-tel.

‣
Megoldás
// Beolvasás
Console.WriteLine("Insert the number!");
string line = Console.ReadLine();
float num = float.Parse(line);

string parity;

// Több soros megoldás if-else elágazással:
if (number % 2 == 0)
	parity = "PÁROS";
else
	parity = "PÁRATLAN";

// Alternatív megoldás egy sorban a feltételes operátorral:
parity = number % 2 == 0 ? "PÁROS" : "PÁRATLAN";

// Kiíratás
    Console.WriteLine("ODD");
class ParityTestInText : MonoBehaviour
{
	[SerializeField] int number;     // Bemeneti változó
	[SerializeField] string parity;  // Kimeneti változó
    
	void OnValidate()
	{
		// Több soros megoldás if-else elágazással:
		if (number % 2 == 0)
			parity = "PÁROS";
		else
			parity = "PÁRATLAN";

		// Alternatív megoldás egy sorban a feltételes operátorral:
		parity = number % 2 == 0 ? "PÁROS" : "PÁRATLAN";
	}
}
// Beolvasás:
Console.WriteLine("Insert an integer number!");
string line = Console.ReadLine();
int number = int.Parse(line);

// String összeállítása:
string text;
text = "";               // Üres string-gel kezdünk
text = string.Empty;     // Alternatíva az előző sorra

for (int i = 1; i <= number; i++)
{
    text = text + i;

    if (i != number)    // az utolsó szám kivételével
        text += ", ";   // egy vesszőt és egy szóközt is hozzáteszünk.
}

// Kiíratás:
Console.WriteLine(text);
using UnityEngine;

class CountingToText : MonoBehaviour
{
    [SerializeField] int number;     // Bemeneti változó
    [SerializeField] string text;    // Kimeneti változó
    
    void OnValidate()
    {
        text = "";               // Üres string-gel kezdünk
        text = string.Empty;     // Alternatíva az előző sorra
        
        for (int i = 1; i <= number; i++)
        {
            text = text + i;
            
            if(i != number)    // az utolsó szám kivételével
                text += ", ";  // egy vesszőt és egy szóközt is hozzáteszünk.
        }
    }
}
Console.WriteLine("Írj be számokat! ha végeztél, írd be a vége szót!");

int sum = 0;
int count = 0;

while(true)
{
    string input = Console.ReadLine();
    
    if (input == "vége")     // Kilépés a ciklusból a break kulcsszóval.
        break;
    
    int number = int.Parse(input);
    sum += number;
    count++;
}

float average = (float)sum / count;
Console.WriteLine($"A számok átlaga: {average}");
// Beolvasás
Console.WriteLine("Insert Number 1!");
string line1 = Console.ReadLine();
int number1 = int.Parse(line1);

Console.WriteLine("Insert Number 2!");
string line2 = Console.ReadLine();
int number2 = int.Parse(line2);

// Számítások elvégzése
int min;
int max;

if (number1 > number2)
{
    min = number2;
    max = number1;
}
else
{
    min = number1;
    max = number2;
}

// Kiíratás
Console.WriteLine("Minimum: " + min);
Console.WriteLine("Maximum: " + max);
Console.WriteLine("Insert Number 1!");
string line = Console.ReadLine();
int number = int.Parse(line);

int min = number;
int max = number;

for (int i = 0; i < 4; i++)
{
    Console.WriteLine($"Insert Number {i+2}!");

    line = Console.ReadLine();
    number = int.Parse(line);

    if(number < min)
        min = number;

    if(number > max)
        max = number;
}


// Kiíratás
Console.WriteLine("Minimum: " + min);
Console.WriteLine("Maximum: " + max);
using UnityEngine;

class MinMaxSearchForMultipleNumber : MonoBehaviour
{
    [SerializeField] int a, b, c, d, e;   // Bemeneti változók
    [SerializeField] int min, max;        // Kimeneti változók
    
    void OnValidate()
    {
        // Minimum kiszámítása:
        min = a;
        if (b < min)
            min = b;
        if (c < min)
            min = c;
        if (d < min)
            min = d;
        if (e < min)
            min = e;
        
        // Maximum kiszámítása (ez úttal feltételes operátorral):
        max = a;
        max = b > max ? b : max;
        max = c > max ? c : max;
        max = d > max ? d : max;
        max = e > max ? e : max;
    }
}
class FizzBuzz : MonoBehaviour
{
    // Bemenet
    [SerializeField, Min(1)] int number = 1;  
    
    void Start()
    {
        for (int i = 1; i <= number; i++)
        {
            // Először tesztelem az oszthatóságot
            bool fizz = i % 3 == 0;
            bool buzz = i % 5 == 0;

            // Többágú elágazást használok
            // Fontos, hogy a FizzBuzz-zal kezdjük (Gondold át, miért!)
            if (fizz && buzz)
                Debug.Log("FizzBuzz");
            else if (fizz)
                Debug.Log("Fizz");
            else if (buzz)
                Debug.Log("Buzz");
            else
                Debug.Log(i);
        }
    }
}
// Beolvasás:
Console.WriteLine("Insert the Number!");
string line1 = Console.ReadLine();
int number = int.Parse(line1);

for (int i = 1; i <= number; i++)
{
    // Először tesztelem az oszthatóságot
    bool fizz = i % 3 == 0;
    bool buzz = i % 5 == 0;

    // Többágú elágazást használok
    // Fontos, hogy a FizzBuzz-zal kezdjük (Gondold át, miért!)
    if (fizz && buzz)
        Console.WriteLine("FizzBuzz");
    else if (fizz)
        Console.WriteLine("Fizz");
    else if (buzz)
        Console.WriteLine("Buzz");
    else
        Console.WriteLine(i);
}
// Beolvasás:
Console.WriteLine("Insert the Base Number!");
string line1 = Console.ReadLine();
int baseNumber = int.Parse(line1); 

Console.WriteLine("Insert the Count!");
string line2 = Console.ReadLine();
int exponent = int.Parse(line2);

// Számítások elvégzése
int result = 1;

for (int i = 0; i < exponent; i++)
    result *= baseNumber;

// Kiíratás
Console.WriteLine("Result: " + result);
// Beolvasás:
Console.WriteLine("Insert the Base Number!");
string line1 = Console.ReadLine();
int baseNumber = int.Parse(line1); 

Console.WriteLine("Insert the Count!");
string line2 = Console.ReadLine();
int count = int.Parse(line2);

// Számítások elvégzése: 

// Az összeget kinullázzuk
int sumOfPowers = 0;

for (int i = 0; i < count; i++)
{
    // Keressük baseNumber i-edik hatványát
    int power = 1;
    for (int j = 0; j < i; j++)
		{
        power *= baseNumber;
		}
    // A hatványozás eredményt hozzá adjuk a végeredményhez.
    sumOfPowers += power;
}

// Kiíratás
Console.WriteLine("Result: " + sumOfPowers);
class SumOfPowers : MonoBehaviour
{
    // Bemenetek
    [SerializeField, Min(1)] int baseNumber = 1;
    [SerializeField, Min(1)] int count = 1;
    
    // Kimenet
    [SerializeField] int sumOfPowers ;

    void OnValidate()
    {
				// Az összeget kinullázzuk
        sumOfPowers = 0;

        for (int i = 0; i < count; i++)
        {
            // Keressük baseNumber i-edik hatványát
            int power = 1;
            for (int j = 0; j < i; j++)
            {
                power *= baseNumber;
            }

            // A hatványozás eredményt hozzá adjuk a végeredményhez.
            sumOfPowers += power;
        }
    }
}
class PrimeTest : MonoBehaviour
{
	[SerializeField] int number;   // Bemeneti változó
	[SerializeField] bool isPrime; // Kimeneti változó         
    
	void OnValidate()
	{
		// Feltételezem, hogy a szám prím, amíg nem találunk egy osztót.
		isPrime = true;
		
		// Külön lekezelem az esetet, amikor a szám kisebb, mint 2
		if (number <= 1)
		isPrime = false;
		        
		// Letesztelem az összes számot, 2 és n/2 közt, hogy osztó-e.
		// n/2 feltt fölösleges osztót keresni
		for (int i = 2; i <= n/2; i++) 
		{
			if (number % i == 0)
				isPrime = false;
		}
	}
}
// Beolvasás:
Console.WriteLine("Insert the Number!");
string line1 = Console.ReadLine();
int number = int.Parse(line1);


// Számítások elvégzése: 

// Feltételezem, hogy a szám prím, amíg nem találunk egy osztót.
bool isPrime = true;

// Külön lekezelem az esetet, amikor a szám kisebb, mint 2
if (number <= 1)
	isPrime = false;

// Letesztelem az összes számot, 2 és n/2 közt, hogy osztó-e.
// n/2 felett fölösleges osztót keresni
for (int i = 2; i <= number / 2; i++) 
{
	if (number % i == 0)
		isPrime = false;
}

Console.WriteLine("Is the Number Prime: " + isPrime);
// Beolvasás:
Console.WriteLine("Insert the Number!");
string line1 = Console.ReadLine();
int a = int.Parse(line1);

Console.WriteLine("Insert Number 2!");
string line2 = Console.ReadLine();
int b = int.Parse(line2);

// Számítások elvégzése: 
int min = Math.Min(a, b);
int max = Math.Max(a, b);
int testedNum = max * 2;

while (testedNum % min != 0)
{
    testedNum += max;
}

// Kiíratás:
Console.WriteLine(testedNum);
using UnityEngine;

class Gun : MonoBehaviour
{
	[SerializeField] int bulletCount = 10;      // Betöltött lőszerek
	[SerializeField] int magazineCount = 5;     // Tárak száma
	[SerializeField] int magazineCapacity = 10; // Töltények 1 tárban

	void Update()
	{
		// Lenyomtuk-e a "Lövés" (itt a Space) gombot?
		bool keyPress = Input.GetKeyDown(KeyCode.Space);

		if (keyPress)   // Ha lenyomtuk a "Lövés" gombot
		{
			if (bulletCount > 0)    // Ha van lőszer a fegyverben
			{
				Debug.Log("Bumm");	// Kiírjuk, hogy "Bumm"
				bulletCount--;      // és csökkentjük a lőszer számát
			}
			else                    // Ha nincs lőszer a fegyverben 
			{
				Debug.Log("Klikk");         // Kiírjuk, hogy "Klikk"
				if( magazineCount > 0)      // Ha van még tárunk
				{
					magazineCount--;				// Csökkentjük a tárak számát
					bulletCount = magazineCapacity; // és feltöltjük a fegyvert
				} 
			}
		}
	}
}
using UnityEngine;

class Gun : MonoBehaviour
{
	[SerializeField] bool isAutomatic = false;  // Automata fegyver-e?
	[SerializeField] int bulletCount = 10;      // Betöltött lőszerek
	[SerializeField] int magazineCount = 5;     // Tárak száma
	[SerializeField] int magazineCapacity = 10; // Töltények 1 tárban
	[SerializeField] float coolDown = 0.5f;     // Lövések közti min. idő

	float _lastShotTime = float.MinValue; // Utolsó lövés ideje

	void Update()
	{
		TryReload();   // Megpróbáljuk feltölteni a tárat
		TryShoot();    // Megpróbálunk lőni
	}

	void TryReload() 
	{
		if (magazineCount > 0 && Input.GetMouseButtonDown(1))
		{ 
			bulletCount = magazineCapacity;
			magazineCount--;
			Debug.Log("Feltölt");
		}
	}

	void TryShoot()
	{
		bool input;

		if (isAutomatic)
			// Lenyomva van-e a ball egérgomb
			input = Input.GetMouseButton(0);
		else
			// Épp most lenyomtuk-e a ball egérgombot:
			input = Input.GetMouseButtonDown(0);

		if (!input) // Ha NINCS "Lövés" input,
			return; // kilépünk a metódusból

		bool coolDownPassed = Time.time - _lastShotTime > coolDown;

		if (!coolDownPassed)  // Ha még nem telt le a cooldown,
			return;           // kilépünk a metódusból


		if (bulletCount > 0)    // Ha van lőszer a fegyverben,
		{
			Debug.Log("Bumm");  // kiírjuk, hogy "Bumm",
			bulletCount--;      // csökkentjük a lőszer számát és
			_lastShotTime = Time.time; // frissítjük az utolsó lövés idejét.
		}
		else                    // Ha nincs lőszer a fegyverben,
		{
			Debug.Log("Klikk"); // kiírjuk, hogy "Klikk".
		}
	}
}
class First100 : MonoBehaviour
{
    void Start()
    {
        int count = 0;    // Eddigi találatok száma
                          // (Segédváltozó, ami tárolja, hányat találtunk eddig)

        for (int i = 1; count < 100; i++)  // Addig megyünk, amíg a találatok száma nem elég.
        {
            if (i % 3 == 0 || i % 7 == 0)  // Ha találtunk egy helyes megoldást...
            {
                count++;       // Eggyel növeltjük a számláló változónkat, és
                Debug.Log(i);  // kiírjuk a számot,a mi megfelelt a feltételnek.
            }
        }
    }
}