2017. április 27., csütörtök

2017.05.04. 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.


A megoldás eleje:
  //Ö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();

2017. április 25., kedd

2017.04.25. Debug - hibakeresés lépésenkénti futtatással


Bal margóra kattintással kiteszem a töréspontot.
F5: fut, majd megáll a program.
Átteszem a vezérlést a VS ablakra.
F10-zel léptetem tovább lépésenként.
Ha a program felhasználói beavatkozást vár, elvégzem úgy, mintha nem lépésenként futna. Figyelhetem a változók állapotát: a Locals ablakban; illetve a programkódban a változóra állva.


            Random rnd = new Random();
            int[] szamok = new int[5];
            Console.WriteLine("Csak akkor írja ki, ha akarom");
            for (int i = 0; i < szamok.Length; i++)
            {
                szamok[i] = rnd.Next();
                Console.WriteLine(szamok[i]);
            }
            Console.ReadLine();

Ha nincs bekapcsolva a Local ablak, itt kapcsolhatod be:

2017. április 20., csütörtök

2017.04.20. For ciklus, foreach ciklus - adott első szám, lépésköz - megoldás

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

namespace rogzitettLepesszamuCiklusok
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.Feladat:
            //Ciklussal tölts fel 
            //egy 10 elemű tömböt a következő módon:
            //A PI legyen az első szám: Math.PI
            //Az első számot minden ciklusmagban növeld meg
            //10-zel, ezzel töltsd fel a többi tömbelemet.
            //Írd ki az értékeket a képernyőre.
            Console.WriteLine("1. feladat: PI-től kezdve számok tizesével");
            double[] szamok = new double[10];
            Random rnd = new Random();
            double a = Math.PI;

            for (int i = 0; i < szamok.Length; i++)
            {
                szamok[i] = a;
                Console.WriteLine(szamok[i]);
                a = a + 10;
            }
            Console.ReadLine();

            //2. feladat:
            //Hozz létre egy új 10 elemű tömböt egész számoknak.
            //Ciklussal töltsd föl a tömböt az eredeti tömb értékeinek egész részével.
            //(Majd a 3-as feladatnál kell kiírnod az értékeket.)
            Console.WriteLine("2. feladat: az előző számok egész részei");

            int[] egeszSzamok = new int[10];
            for (int i = 0; i < egeszSzamok.Length; i++)
            {
                egeszSzamok[i] = (int)szamok[i];
            }
            Console.ReadLine();

            //3. feladat:
            //Írjuk ki a tömb tartalmát a foreach ciklussal!
            //x:ciklusváltozó, értéke automatikusan lépésenként 1-gyel nő,
            //a típusát meg kell adni, egyezzen a tömbelemek típusával
            //in kulcsszó után kell megadni a tömb nevét
            Console.WriteLine("3. feladat: a tömb tartalma foreach ciklussal");

            foreach (int x in egeszSzamok)
            {
                Console.WriteLine(x);
            }
            Console.ReadLine();

            //4. feladat:
            //Írjuk ki a tömb tartalmát visszafelé!
            //(Maximális elemszámtól az elsőig, egyesével visszafelé lépkedve.)
            Console.WriteLine("4. feladat: a tömb tartalma visszafelé");
            for (int i = egeszSzamok.Length - 1; i >= 0; i--)
            {
                Console.WriteLine("Az új tömb {0}. eleme: {1}", i + 1, egeszSzamok[i]);
            }
            Console.ReadLine();
       
            //5. feladat:
            //Tölts föl egy 5 elemű tömböt 0 és 10 közötti véletlen egész számokkal!
            //Írd ki a tömb tartalmát!
            Console.WriteLine("5. feladat: 5 elemű tömb feltöltése véletlen egész számokkal");
            int[] veletlenEgeszSzamok = new int[5];
            for (int i = 0; i < veletlenEgeszSzamok.Length; i++)
            {
                veletlenEgeszSzamok[i]= rnd.Next(11);
                Console.WriteLine("Az új tömb {0}.eleme: {1}", i + 1, veletlenEgeszSzamok[i]);
            }
            Console.ReadLine();

            //6. feladat:
            //Összegzés tétele: határozd meg a tömbelemek összegét!
            Console.WriteLine("6. feladat: a tömbelemek összege");
            int osszeg = 0;

            for (int i = 0; i < veletlenEgeszSzamok.Length; i++)
            {
                osszeg = osszeg + veletlenEgeszSzamok[i];
            }
            Console.WriteLine("A tömbelemek összege: {0}", osszeg);
            Console.ReadLine();

            //7. feladat:
            //Összegzés tétele:határozd meg a hárommal osztható tömbelemek összegét!
            Console.WriteLine("7. feladat: a hárommal osztható tömbelemek összege");
            int osszeg3 = 0;
            for (int i = 0; i < veletlenEgeszSzamok.Length; i++)
            {
                if (veletlenEgeszSzamok[i] % 3 == 0)
                    osszeg3 = osszeg3 + veletlenEgeszSzamok[i];
            }
            Console.WriteLine("A hárommal osztható elemek összege: {0}", osszeg3);
            Console.ReadLine();

          

            //8. feladat:
            //Ciklussal írjunk ki 5 számot a képernyőre 100-zal kezdődően ötösével!
            //(100, 105, 110, 115, 120)
            Console.WriteLine("8. feladat: 5 szám 100-zal kezdődően ötösével");
            int szam = 100;
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine(szam);
                szam = szam + 5;
            }
            Console.ReadLine();

            //9. feladat:
            //Ciklussal írjuk ki  10-től 1-ig az egész számokat!
            Console.WriteLine("9. feladat: 10-től 1-ig az egész számok");
            szam = 10;
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(szam);
                szam--;
            }
            Console.ReadLine();
        }
    }

}

2017.04.20. Házi feladat: For ciklus, foreach ciklus - Átlaghőmérséklet

Modellezzük a januári napi átlaghőmérséklet számítását.
-     Az éjszakai hőmérséklet modellezésére tölts föl egy 31 elemű tömböt véletlen egész számokkal, melynek értékei -28 és -5 (fok) között vannak.
-     A nappali hőmérséklet modellezésére tölts föl egy másik 31 elemű tömböt véletlen egész számokkal, melynek értékei -15 és 15 (fok) között vannak.
- Írd ki a tömböket foreach ciklussal.
-     Add meg a januári éjszakai középhőmérsékletet.
-     Add meg a januári nappali középhőmérsékletet.
Add meg a januári napi középhőmérsékletet.

Megoldás Ádám megoldása alapján:
//Modellezzük a januári napi átlaghőmérséklet számítását.
            //-     Az éjszakai hőmérséklet modellezésére tölts föl egy 31 elemű tömböt véletlen egész számokkal, melynek értékei -28 és -5 (fok) között vannak.
            //-     A nappali hőmérséklet modellezésére tölts föl egy másik 31 elemű tömböt véletlen egész számokkal, melynek értékei -15 és 15 (fok) között vannak.
            //- Írd ki a tömböket foreach ciklussal.
            //-     Add meg a januári éjszakai középhőmérsékletet.
            //-     Add meg a januári nappali középhőmérsékletet.
            //Add meg a januári napi középhőmérsékletet.

            Random rnd = new Random();
            double[] janEjszakaiH = new double[31];
            double[] janNappaliH = new double[31];

            for (int i = 0; i < janEjszakaiH.Length; i++)
            {
                janEjszakaiH[i] = rnd.Next(-28, -4);
                janNappaliH[i] = rnd.Next(-15, 16);
            }

            Console.WriteLine("A januári éjszakai hőmérsékletek:");
            int szamlalo = 0;
            foreach (int x in janEjszakaiH)
            {
                szamlalo++;
                Console.WriteLine("A(z) {0}. nap éjjeli hőmérséklete: {1} °C", szamlalo, x);
            }
            Console.WriteLine();
            Console.ReadLine();

            Console.WriteLine("A januári nappali hőmérsékletek:");
            szamlalo = 0;
            foreach (int x in janNappaliH)
            {
                szamlalo++;
                Console.WriteLine("A(z) {0}. nap nappali hőmérséklete: {1} °C", szamlalo, x);
            }
            Console.WriteLine();
            Console.ReadLine();

            //éjszakai középhőmérséklet

            double janEjszakaiKözepH = 0;

            for (int i = 0; i < janEjszakaiH.Length; i++)
            {
                janEjszakaiKözepH += janEjszakaiH[i]; //egyszerűbben: janEjszakaiKözepH = janEjszakaiKözepH + janEjszakaiH[i];
            }
            janEjszakaiKözepH /= janEjszakaiH.Length; //egyszerűbben:janEjszakaiKözepH = janEjszakaiKözepH/janEjszakaiH.Length;
            Console.WriteLine("A januári éjszakai középhőmérséklet: {0:00.000} °C", janEjszakaiKözepH);

            //nappali középhőmérséklet

            double janNappaliKözepH = 0;

            for (int i = 0; i < janNappaliH.Length; i++)
            {
                janNappaliKözepH += janNappaliH[i];
            }
            janNappaliKözepH /= janNappaliH.Length;
            Console.WriteLine("A januári nappali középhőmérséklet: {0:00.000} °C", janNappaliKözepH);

            //napi középhőmérséklet
            //Egyik megoldás:
            double janNapiKözepH = 0;

            for (int i = 0; i < 31; i++)
            {
                janNapiKözepH += janEjszakaiH[i] + janNappaliH[i];
            }
            janNapiKözepH = janNapiKözepH / (janEjszakaiH.Length + janNappaliH.Length);
            Console.WriteLine("A januári napi középhőmérséklet: {0:00.000} °C", janNapiKözepH);

            //Másik megoldás:
            double[] napi = new double[31];
            janNapiKözepH = 0;

            for (int i = 0; i < 31; i++)
            {
                napi[i] = (janEjszakaiH[i] + janNappaliH[i])/2;
                janNapiKözepH += napi[i];
            }
            janNapiKözepH = janNapiKözepH / napi.Length;
            Console.WriteLine("A januári napi középhőmérséklet: {0:00.000} °C", janNapiKözepH);

            Console.ReadLine();