2022.02.28. Elmélet

 Témakör:

Algoritmus fogalma, jellemzői. Értékadás. Vezérlőszerkezetek: szekvencia, szelekció, iteráció. Alprogramok: metódusok, függvények, paraméterek.

Eddig jutottunk:

    Ciklusok megvalósítása

        WHILE - Elöltesztelő ciklus


2022.02.18.-21. Önvezető autók

Befejeztük. Az otthon lévők pótoljanak, oldják meg egyedül az egészet.

 Önvezető autók

Napjainkban az önvezető autók egyre gyorsabban fejlődnek, több neves cég is fejleszt ilyeneket. Ebben a feladatban a rájuk vonatkozó adatokat kell feldolgoznia.

 Az adatokat a lenti keretben találja. Az állomány soronként tartalmazza az autók következő adatait egymástól pontosvesszővel elválasztva:

 - azonosító (gyártó és modellszám)

- teljesítmény (lóerő)

- tömeg (tonna)

- gyorsulás (hány másodperc alatt gyorsul 100 km/h-ra)

- a vezetőnek hányszor kellett beavatkozni a vezetésbe 10.000 km-en

 A fájlban 9 autó adatai vannak.

 

Tesla Model S P90D;760;2,20;3;3

Volvo XC90;889;2,90;4;14

Volkswagen GO989;1378;3,66;5;6

Audi Q525;772;2,40;2;3

Mercedes Benz898;739;2,20;3;9

Google Drive 18;752;2,55;4;11

Delphi Magic 428B;1194;3,00;3;4

Bosch Doom300;700;2,09;4;6

Nissan Cherry 100;725;3,1;3;7

 

Például a Tesla Model S P90D autó 760 lóerős teljesítményű, 2,2 tonna tömegű, 3 másodperc alatt gyorsul 100 km/órára és a 10.000 km-es tesztvezetésen 3-szor volt szükség humán beavatkozásra.

 1. Készítsen programot a következő feladatok megoldására, amelynek a forráskódját onvezeto néven mentse el.

A képernyőre írást igénylő részfeladatok megjelenítése előtt írja a képernyőre a feladat sorszámát!

2. Az adatokat olvassa be fájlból és tárolja el 5 listában.

3. Írja ki a képernyőre a leggyorsabb autó adatait. (Az a leggyorsabb, ami a legkevesebb idő alatt gyorsul 100-ra.) 

4. Írja ki a képernyőre a legkevésbé önálló autó azonosítóját. (Az a legkevésbé önálló, amelynél a legtöbbet kellett beavatkozni a vezetésbe.) 

6. Írja ki a képernyőre az autók átlag tömegét. 

7. Írja ki a képernyőre, és egy új fájlba autónként a következő adatokat szóközzel elválasztva: sorszám (a feldolgozás sorrendjében automatikusan generált), tömeg kg-ban. (1 tonna = 1000 kg).


Máté megoldása:

class Program
    {
        static List<string> azonosito = new List<string>();
        static List<int> loero = new List<int>();
        static List<double> tomeg = new List<double>();
        static List<double> gyorsulas = new List<double>();
        static List<int> vezetoBeavat = new List<int>();
        static void beolvas()
        {
            StreamReader sr = new StreamReader("autok.txt");
            string[] ideiglenes;

            while (!sr.EndOfStream)
            {
                ideiglenes = sr.ReadLine().Split(";");
                azonosito.Add(ideiglenes[0]);
                loero.Add(Convert.ToInt32(ideiglenes[1]));
                tomeg.Add(Convert.ToDouble(ideiglenes[2]));
                gyorsulas.Add(Convert.ToDouble(ideiglenes[3]));
                vezetoBeavat.Add(Convert.ToInt32(ideiglenes[4]));
            }
            sr.Close();

        }

        static int leggyorsabb()
        {
            double ideiglenes = gyorsulas[0];
            int i = 1;
            int j = 0;
            while (i < gyorsulas.Count)
            {
                if (ideiglenes > gyorsulas[i])
                {
                    ideiglenes = gyorsulas[i];
                    j = i;
                }
                i++;
            }
            return j;
        }

        static string[] adatKiiras()
        {
            int i = leggyorsabb();
            string[] data = { azonosito[i], loero[i].ToString(), tomeg[i].ToString(), gyorsulas[i].ToString(), vezetoBeavat[i].ToString() };
            return data;
        }
       
        static string legkevesbe()
        {
            double ideiglenes = vezetoBeavat[0];
            int i = 1;
            int j = 0;
            while (i < vezetoBeavat.Count)
            {
                if (ideiglenes < vezetoBeavat[i])
                {
                    ideiglenes = vezetoBeavat[i];
                    j = i;
                }
                i++;
            }
            return azonosito[j];
        }

        static double atlag()
        {
            double atlag = 0;
            int i = 0;
            while (i < tomeg.Count)
            {
                atlag += tomeg[i];
                i++;
            }
           
            return Convert.ToDouble(string.Format("{0:0.000}", atlag = (atlag / tomeg.Count)));
        }

        static void kiiras()
        {
            StreamWriter sw = new StreamWriter("ujFajl.txt");
            int i = 0;
            while (i < tomeg.Count)
            {
                sw.WriteLine($"{i+1}. {tomeg[i] * 1000} kg");
                Console.WriteLine($"{i+1}. {tomeg[i] * 1000} kg");
                i++;
            }
            sw.Close();
        }
//Szorgalmi: Rendezd sorba az azonosítókat,
//majd ezen a listán végiglépkedve írd ki az eredeti adatokat.
        static void sorbarendezes()
        {
            List<string> azonositoRend = new List<string>(azonosito);
            azonositoRend.Sort();
            int[] indexModositva = new int[azonositoRend.Count];
            int i = 0;
            while (i < azonositoRend.Count)
            {
                indexModositva[i] = azonosito.IndexOf(azonositoRend[i]);
                i++;
            }
            i = 0;
            while (i < azonosito.Count)
            {
                Console.WriteLine(azonositoRend[i] + " " + loero[indexModositva[i]] + "Le " + tomeg[indexModositva[i]] + " Tonna " + gyorsulas[indexModositva[i]] + "s " + vezetoBeavat[indexModositva[i]]+" alkalom");
                i++;
            }
        }

        static void sorbarendezes2()
        {
            List<string> azonositoRend = new List<string>(azonosito);
            azonositoRend.Sort();
            int i = 0;
            int j = 0;
            string ideiglenes = String.Empty;
            while (i < azonositoRend.Count)
            {
                ideiglenes = azonositoRend[i];
                j = 0;
                while (j < azonosito.Count)
                {
                    if (ideiglenes == azonosito[j])
                    {
                        Console.WriteLine($"{azonositoRend[i]} {loero[j]}Le {tomeg[j]} Tonna {gyorsulas[j]}s {vezetoBeavat[j]} alkalom");
                    }
                    j++;
                }
                i++;
            }
        }
        static void Main(string[] args)
        {
            //1.Készítsen programot a következő feladatok megoldására, amelynek a forráskódját onvezeto néven mentse el.

            //A képernyőre írást igénylő részfeladatok megjelenítése előtt írja a képernyőre a feladat sorszámát!
            Console.WriteLine("2. feladat");
            beolvas();
            Console.WriteLine("Beolvasás...");
            Console.WriteLine("\n3. feladat");
            foreach  (string x in adatKiiras())
            {
                Console.Write(x+" ");
            }
            Console.WriteLine("\n4. feladat");
            Console.WriteLine(legkevesbe());
            Console.WriteLine("\n5. feladat");
            Console.WriteLine(atlag()+" tonna az átlagtömeg");
            Console.WriteLine("\n6. feladat");
            Console.WriteLine("Tömegek sorszámozva \n");
            kiiras();
            Console.WriteLine();
            sorbarendezes();
            Console.WriteLine();
            sorbarendezes2();

            Console.ReadLine();
            //2.Az adatokat olvassa be fájlból és tárolja el 5 listában.

            //3.Írja ki a képernyőre a leggyorsabb autó adatait. (Az a leggyorsabb, ami a legkevesebb idő alatt gyorsul 100 - ra.)

            //4.Írja ki a képernyőre a legkevésbé önálló autó azonosítóját. (Az a legkevésbé önálló, amelynél a legtöbbet kellett beavatkozni a vezetésbe.)

            //6.Írja ki a képernyőre az autók átlag tömegét.

            //7.Írja ki a képernyőre, és egy új fájlba autónként a következő adatokat szóközzel elválasztva: sorszám(a feldolgozás sorrendjében automatikusan generált), tömeg kg-ban. (1 tonna = 1000 kg).
        }
    }


2022.02.14. Listák - bevezetés

 MINTAPROGRAM LISTA HASZNÁLATÁRA

using System;
using System.Collections.Generic;


namespace lista
{ //A lista egy dinamikus tömb, ami legfőképp abban nyilvánul meg, hogy nem kell megmondani előre, hány eleme legyen.
    class Program
    {
        static Random rnd = new Random();
        static List<int> veletlenLista = new List<int>(); //nem kell megadni a hosszát
        //Emlékeztetésképpen - ha tömb lenne, így nézne ki (ezt most nem használjuk semmire):
        //static int[] veletlenTomb = new int[90];  //itt el kéne dönteni, hány elem legyen

        static List<int> jegyekLista = new List<int>();
        static void veletlen()
        {
            for (int i = 0; i < 90; i++)
            {
                veletlenLista.Add(rnd.Next(-20, 41));  //.Add kell, ha hozzá akarunk tenni egy elemet a lista végére (első esetben is)
            }
        }
        static void kiiras()
        {
            for (int i = 0; i < veletlenLista.Count; i++) //.Count-ig megyünk, ha végig akarunk menni
            {
                Console.WriteLine(veletlenLista[i]); //a lista i-edik elemére ugyanúgy hivatkozunk, mint a tömbnél
            }
        }

        static void pozitivNegativ()
        {
            int poz = 0;
            int neg = 0;
            foreach (int x in veletlenLista) //a foreach ugyanúgy "magától" végigmegy
            {
                if (x < 0) neg++;
                if (x > 0) poz++;
            }

            if (neg > poz)
            {
                Console.WriteLine("Több a negatív szám.");
            }
            else
            {
                if (neg < poz)
                {
                    Console.WriteLine("Több a pozitív szám.");
                }
                else Console.WriteLine("Egyenlő a pozitív és a negatív szám.");
            }
        }
        static void adatbekeres()
        {
            for (int i = 0; i < 8; i++) //úgy döntöttünk itt és most, hogy 8 jegyet kérünk be
            {
                Console.Write("Kérem írja be a(z) {0}. tanuló jegyét:", i + 1);
                jegyekLista.Add(Convert.ToInt32(Console.ReadLine()));
            }
        }
        static void atlagSzamitas()
        {
            int sum = 0;
            for (int i = 0; i < jegyekLista.Count; i++)
            {
                sum += jegyekLista[i];
            }
            double atlag = (double)sum / jegyekLista.Count;
            Console.WriteLine("Átlaguk: {0}", atlag);
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Adatfeltöltés");
            veletlen();
            Console.WriteLine("Kiírás");
            kiiras();
            Console.ReadLine();
            Console.WriteLine("Pozitív-negatív számlálás");
            pozitivNegativ();
            Console.ReadLine();
            Console.WriteLine("Feltöltés billentyűzetről");
            adatbekeres();
            Console.ReadLine();
            Console.WriteLine("Átlagszámítás");
            atlagSzamitas();
            Console.ReadLine();
        }

    }

}

1. feladat

Ezek után térj vissza ehhez a leckéhez:

https://codehub2020.blogspot.com/2022/01/20220110-fajlkezeles-bevezetes.html

Alakítsd át a megoldást listássá.


2. feladat

A legutóbbi dolgozat másik csoportjának feladatsorát oldd meg listákkal.

Itt fogjuk befejezni holnap.

Aki mára nem javította meg az előző feladatsorát, az pótolja be.





számonkérés

A csoport

 Feladat: Gyümölcsök vitamintartalma

gyümölcs

B1 vitamin tartalom

C vitamin tartalom

alma

0,02

4

ananász

0,03

17

citrom

0,02

53

cseresznye

0,06

10

fekete áfonya

0,06

14

földieper

0,07

59

grapefruit

0,02

38

őszibarack

0,05

7

alma; 0,02; 4

ananász; 0,03; 17

citrom; 0,02; 53

cseresznye; 0,06; 10

fekete áfonya; 0,06; 14

földieper; 0,07; 59

grapefruit; 0,02; 38

őszibarack; 0,05; 7 


Ebben a táblázatban a gyümölcsök nevei mellett elsőként az szerepel, hogy hány mg B1 vitamint tartalmaznak, másodikként pedig az, hogy hány mg C vitamint tartalmaznak. A táblázatból készíts egy szöveges fájlt. Használj egy megfelelő elválasztó karaktert.

- Olvasd be a fájl tartalmát, majd írd ki a képernyőre.

- Írd ki annak a gyümölcsnek a nevét, amelyik a legtöbb C vitamint tartalmazza.

- Rendezd sorba az adatokat név szerint, majd írd ki a neveket. A sorbarendezés során ne vesszen el az eredeti sorrend sem. A sorbarendezésre használhatod az Array.Sort() metódust.

- A szöveges fájlt később ki szeretnénk egészíteni az összes gyümölcs adataival. Erre is felkészülve add meg a választ: benne van-e a fájlban az avokádó? Ha benne van, írd ki, hogy hol van. Ha nincs benne, írj hibaüzenetet. Ha megtaláltad az avokádót, ne keresd tovább, állj meg.

(Jó tanács: mivel most nincs benne, tesztelj egy másik gyümölcs nevével.)

- Átlagosan hány mg B1 vitamint tartalmaznak a fájlban található gyümölcsök? (Össze kell adni mindet és elosztani a darabszámmal.)

- Ezt az egyetlen értéket (az átlagot) írd ki egy új fájlba.

--------------------------------------------------------------------------------------------------------------

B csoport

Feladat: Zöldségek zsír-és szénhidráttartalma


Név

Zsír (g)

Szénhidrát (g)

Articsóka

0,1

2,9

Brokkoli

0,2

2,1

Burgonya (nyári)

0,2

18,4

Burgonya (téli)

0,2

20

Cukkini

0,4

5,3

Endívia saláta

0,2

0,3

Halványító zeller

0,2

2,2

Káposzta, savanyított

0,3

2,4

Karalábé

0,2

6,9

Petrezselyem zöldje

0,4

9,8

Petrezselyemgyökér

0,1

5,9

Póréhagyma

0,3

6,3

Rebarbara

0,1

3,3

Articsóka; 0,1; 2,9

Brokkoli; 0,2; 2,1

Burgonya (nyári); 0,2; 18,4

Burgonya (téli); 0,2; 20

Cukkini; 0,4; 5,3

Endívia saláta; 0,2; 0,3

Halványító zeller; 0,2; 2,2

Káposzta, savanyított; 0,3; 2,4

Karalábé; 0,2; 6,9

Petrezselyem zöldje; 0,4; 9,8

Petrezselyemgyökér; 0,1; 5,9

Póréhagyma; 0,3; 6,3

Rebarbara; 0,1; 3,3

Ebben a táblázatban a zöldségek nevei mellett elsőként az szerepel, hogy hány gramm zsírt tartalmaznak, másodikként pedig az, hogy hány gramm szénhidrátot tartalmaznak. A táblázatból készíts egy szöveges fájlt. Használj egy megfelelő elválasztó karaktert. 

- Olvasd be a fájl tartalmát, majd írd ki a képernyőre.

- Írd ki annak a zöldségnek a nevét, amelyik a legtöbb szénhidrátot tartalmazza.

- Rendezd sorba a zsírtartalmat név szerint, majd írd ki az új sorrendet. A sorbarendezés során ne vesszen el az eredeti sorrend sem. A sorbarendezésre használhatod az Array.Sort() metódust.

- A szöveges fájlt később ki szeretnénk egészíteni az összes zöldség adataival. Erre is felkészülve add meg a választ: benne van-e a fájlban a paradicsom? Ha benne van, írd ki, hogy hol van. Ha nincs benne, írj hibaüzenetet. Ha megtaláltad a paradicsomot, ne keresd tovább, állj meg.

(Jó tanács: mivel most nincs benne, tesztelj egy másik zöldség nevével.)

- Számold meg, hogy hány zöldség zsírtartalma 0,2 g?

- Miután megadtad a választ, írd ki ezeknek a zöldségeknek a neveit egy új fájlba.

2024.02.15.-16. Helyettesítés

 Adatbázis: vizsgaremek adatbázisának befejezése teljesen készre, dokumentáció kiegészítése, befejezése. Vizsgaremek felületének megvalósítá...