2020. október 22., csütörtök

2020.10.22. Gyakorlás - Egy sorban több adatot tartalmazó fájl beolvasása - Házi feladat

Készítsd egy fájlt, amiben egy sorban a következő adatok vannak szóközzel elválasztva:

vezetéknév keresztnév születési_hely kor

(Nem lehet két keresztnevet beírni.)

Olvasd be úgy, hogy a vezetéknevet és a keresztnevet rögtön egy tömbbe tedd be,
illetve egy második tömbbe kerüljenek a születési helyek,
és egy harmadik tömbbe a korok int-ként.
Beolvasás után írd ki az adatokat a képernyőre,
és egy új fájlba is változtatás nélkül.

2020.10.22. Fájlkezelés - egy sorban több adat

 Mintaprogram:

using System;

using System.IO;

 

namespace fajlKezelesBonyolultabb

{

    class Program

    {   

        static string[] nevek = new string[8];

        static int[] korok = new int[8];

 

 

        static void kiir()

        {

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

            {

                 Console.WriteLine("{0}, {1}",nevek[i], korok[i]);

            }

        }

 

        static void Main(string[] args)

        {

            StreamReader sr = new StreamReader("diakok.txt");

            string[] atmeneti;

            int i = 0;

            while (!sr.EndOfStream)

            {

                atmeneti = sr.ReadLine().Split(',');

                nevek[i] = atmeneti[0];

                korok[i] = Convert.ToInt32(atmeneti[1]);

                i++;

            }

            sr.Close();

            kiir();

 

            StreamWriter nagybetus = new StreamWriter("nagy.txt");

            for (int j = 0; j < korok.Length; j++)

            {

                nagybetus.WriteLine(nevek[j].ToUpper());

            }

            nagybetus.Close();

 

            Console.ReadLine();

        }

    }

}

Teszt fájl:

Öröm Melitta,15
Avon Mór,16
Ordy Bálint,17
Szikla Szilárd,15
Bekre Pál,17
Heu Réka,17
Mérta Nóra,18
Emanci Pál,16

2020. október 21., szerda

2020.10.21. Fájlkezelés

Megnéztük, köv. órán kipróbáljuk újra.

using System;

using System.IO; //ezt pótolni kell!

 

namespace fajlkezeles

{

    class Program

    {

        static int[] szamTomb = new int[10];

 

        static void kiiras()

        {

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

            {

                Console.WriteLine(szamTomb[i]);

            }

        }

 

        static void Main(string[] args)

        {

            StreamReader sr = new StreamReader("szamok.txt"); //olvasásra megnyitjuk a fájlt

            int i = 0;

            while (!sr.EndOfStream) //addig megyünk, míg vége nincs a fájlnak

            {

                szamTomb[i]= Convert.ToInt32(sr.ReadLine()); //egyszerre egy sort beolvasunk, konvertálunk és beteszünk a tömbbe

                i++;

            }

            sr.Close(); //lezárjuk a fájlt: KÖTELEZŐ ELEM!

 

            kiiras();

 

            StreamWriter sw = new StreamWriter("dupla.txt"); //írásra megnyitunk egy fájlt; ha eddig nem létezett, létre is hozza

            for (int j = 0; j < szamTomb.Length; j++)

            {

                sw.WriteLine(szamTomb[j]*2); //írunk a fájlba soronként

            }

            sw.Close(); //lezárjuk a fájlt: KÖTELEZŐ ELEM!

 

            Console.ReadLine();

        }

    }

}


23
56
43
0
99
2
1
666
888
24

2020. október 19., hétfő

2020.10.19. Struktúra gyakorlás

 A minta alapján írtunk egy struktúra alapú programot, amiben focilabdák adatait tároljuk.

Akinek nincs kész, be kell fejezni.

Egy mintaprogramot a köv. órán ideteszek.


A szünet után hétfőn fogunk tz javítót írni (Tibi is készüljön).

2020.10.19. Struktúra - ismétlés

1. példa:


        public struct autok
        {
            public int ar; //ft
            public int motor; //cm3
            public int szemely; //fő
            public int teljesitmeny; //lóerő
        }
        static void Main(string[] args)
        {
            autok auto1 = new autok(); 
            auto1.ar = 6000000;
            auto1.motor = 1600;
            auto1.szemely = 5;
            auto1.teljesitmeny = 150;
--------------------------------------------------
Magyarázat:
publicmódosítószó, ami befolyásolja az adott elem láthatóságát. Mostmár nem mindent a Main-be írunk. Amit nem oda írunk, annál szabályozhatjuk, mennyire legyen nyilvános. A public azt jelenti, hogy mindenhol látható. (A private pl. rejtettet jelent majd.)
structa struktúra adatszerkezet kulcsszava. A struktúra a procedurális nyelvekben (pl. Pascal) a rekordnak felel meg. Ebben összefogunk egy szerkezetbe összetartozó adatokat. A struktúra a definiálásakor (lásd a Main felett) még csak egy váz, egy üres szerkezet, ami megmutatja, milyen adatokat fogunk tárolni a példányosításkor.
autoka struktúra neve
public int ar;adattag, más néven mező a struktúrában. olyan, mint egy változó, de ez a struktúra törzsében van, és gyakran nem adunk neki kezdőértéket.
autok auto1 = new autok();  Itt definiálunk egy autok típusú változót auto1 néven, és a new kulcsszóval helyet foglalunk neki a memóriában az autok() konstruktor segítségével. Ezt hívjuk példányosításnak (létrehozunk egy példányt).
auto1.ar = 6000000;  Az auto1 változón belül elérjük az ar mezőt (adattagot), ennek értékül adjuk a jobb oldalon levő értéket.
--------------------------------------------------


2. példa

 namespace struktura

{

    class Program

    {

        public struct auto

        {

            public string gyarto;

            public double motor; //köbcenti

            public int ulesek; //ülések száma

            public bool akcio; //akciós-e

        }

 

        static auto[] autok = new auto[3];

 

        static void bekeres()

        {

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

            {

                Console.Write("Kérem az {0}. autó gyártóját: ",i+1);

                autok[i].gyarto = Console.ReadLine();

                Console.Write("Kérem az {0}. autó motor térfogatát: ",i+1);

                autok[i].motor = Convert.ToDouble(Console.ReadLine());

                Console.Write("Kérem az {0}. autó üléseinek számát: ",i+1);

                autok[i].ulesek = Convert.ToInt32(Console.ReadLine());

                Console.Write("Adja meg, hogy a(z) {0}. autó akciós-e (true/false)?: ",i+1);

                autok[i].akcio = Convert.ToBoolean(Console.ReadLine());

            }

        }

 

        static void kiiras()

        {

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

            {

                Console.WriteLine("{0} autó", i+1);

                Console.WriteLine(autok[i].gyarto);

                Console.WriteLine(autok[i].motor);

                Console.WriteLine(autok[i].ulesek);

                Console.WriteLine(autok[i].akcio);

                Console.WriteLine();

            }

        }

 

        static void Main(string[] args)

        {

            bekeres();

            kiiras();

            Console.ReadLine();

        }

    }

}

2020.10.15. Javító tz - Gyakorlás

 using System;


namespace ConsoleApp13

{

//    I csoport

//1. feladat: 0 p

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

//2. feladat: 0 p

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

//    Töltsd fel -10 és 10 közötti véletlen számokkal (a -10 és az 10 is benne legyen).

// Írd ki a tömb tartalmát egy sorba a képernyőre, az elemeket vesszővel válaszd el.

//3. feladat: 4 p

//    Kiválasztás tételével állapítsd meg, hogy benne van-e a tömbben a -2. Ha benne van, írd ki a sorszámát, ha nincs benne, írd ki, hogy nem találtad meg.

//4. feladat: 3 p

//    Hozz létre egy új 10 elemű tömböt tört számok számára.Ennek a második tömbnek minden eleme a fele legyen az első tömb elemeinek.

//    Írd ki a tömb tartalmát sorfolytonosan (minden elem egymás mellett, vesszővel elválasztva).

//5. feladat: 3 p

//    Keresd meg a legnagyobb elemet.Írd ki az értékét!

//6. feladat: 3 p

//    Számold ki, és írd ki az első tömb nullától különböző, pozitív tömbelemeinek szorzatát!

//7. feladat: 3 p

//    Számold meg a második tömbben azokat az elemeket, amik oszthatók 4-gyel.Írd ki az eredményt.

//8. feladat: 4 p

//    Döntsd el, hogy van-e az első tömbben 4 és 9 közötti szám (egyenlőség nem megengedett). Ha nincs benne, írd ki, hogy nincs a tömbben ilyen szám.Ha viszont van benne, ne vizsgáld a többi elemet.Írd ki a képernyőre a megtalált elemet és a sorszámát (ne az indexét).


    class Program

    {

        static int[] tomb1 = new int[10];

        static Random rnd = new Random();

        static void feltoltes()

        {

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

            {

                tomb1[i] = rnd.Next(-10, 11);

                Console.Write("{0}, ", tomb1[i]);

            }

        }

        static void kivalasztas()

        {

            int k = 0;

            while (k < tomb1.Length && tomb1[k] != -2)

            {

                k++;

            }

            if (k != tomb1.Length)

            {

                Console.WriteLine("Van benne -2. A {0}.", k+1);

            }

            else

            {

                Console.WriteLine("Nincs benne!");

            }

        }

        static double[] tomb2 = new double[10];

        static int j = 0;

        static void masodfel()

        {

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

            {

                tomb2[i] = tomb1[i] / 2;

                i++;


            }

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

            {

                Console.Write("{0},", tomb2[i]);

            }

        }

        static double max = tomb2[0];

        static void maximum()

        {

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

            {

                if (tomb2[i] > max)

                {

                    max = tomb2[i];

                }

            }

            Console.WriteLine("{0} a legnagyobb szám a második tömbben", max);

        }

        static int osszeg = 1;

        static void szorzas()

        {

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

            {

                if (tomb1[i] > 0)

                {

                    osszeg = osszeg * tomb1[i];

                }

            }

            Console.WriteLine("{0} a pozitív számok szorzata", osszeg);

        }

        static double mennyi = 0;

        static int m = 0;

        static void megszamol()

        {


            while (m < tomb2.Length)

            {

                if (tomb2[m] % 4 == 0)

                {

                    mennyi++;

                }

                m++;

            }

            Console.WriteLine("{0} szám osztható 4-el", mennyi);

        }

        static void eldontes()

        {

            int i = 0;


            bool van = false;


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


            {


                if (tomb1[i] > 4 && tomb1[i] < 9)


                    van = true;


                i++;


            }


            if (van)


                Console.WriteLine("Van az első tömbben 4 és 9 közötti elem: {0}", i);


            else


                Console.WriteLine("Nincs az első tömbben 4 és 9 közötti elem.");

        }

        static void Main(string[] args)

        {

            /*I csoport

1.feladat: 0 p

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

2.feladat: 0 p

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

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

Írd ki a tömb tartalmát egy sorba a képernyőre, az elemeket vesszővel válaszd el.

    */

            Console.WriteLine("1.feladat MEGVAN!");

            Console.WriteLine();

            Console.WriteLine("2.feladat");

            feltoltes();

            Console.WriteLine();

            /*

3.feladat: 4 p

Kiválasztás tételével állapítsd meg, hogy benne van - e a tömbben a - 2.Ha benne van, írd ki a sorszámát, ha nincs benne, írd ki, hogy nem találtad meg.

   */

            Console.WriteLine("3.feladat");

            kivalasztas();

            Console.WriteLine();

            /*

4.feladat: 3 p

Hozz létre egy új 10 elemű tömböt tört számok számára.Ennek a második tömbnek minden eleme a fele legyen az első tömb elemeinek.

Írd ki a tömb tartalmát sorfolytonosan(minden elem egymás mellett, vesszővel elválasztva).

*/

            Console.WriteLine("4.feladat");

            masodfel();

            Console.WriteLine();

            Console.WriteLine();

            /*

5.feladat: 3 p

Keresd meg a legnagyobb elemet. Írd ki az értékét!

*/

            Console.WriteLine("5.feladat");

            maximum();

            Console.WriteLine();

            /*

6.feladat: 3 p

Számold ki, és írd ki az első tömb nullától különböző, pozitív tömbelemeinek szorzatát!

*/

            Console.WriteLine("6.feladat");

            szorzas();

            Console.WriteLine();

            /*

7.feladat: 3 p

Számold meg a második tömbben azokat az elemeket, amik oszthatók 4 - gyel.Írd ki az eredményt.

*/

            Console.WriteLine("7.feladat");

            megszamol();

            Console.WriteLine();

            /*

8.feladat: 4 p

Döntsd el, hogy van-e az első tömbben 4 és 9 közötti szám(egyenlőség nem megengedett). Ha nincs benne, írd ki, hogy nincs a tömbben ilyen szám.Ha viszont van benne, ne vizsgáld a többi elemet. Írd ki a képernyőre a megtalált elemet és a sorszámát(ne az indexét).

*/

            Console.WriteLine("8.feladat");

            eldontes();

            Console.ReadLine();

        }

    }

}