2018. február 27., kedd

2018.02.27. Adatbázis-kezelés gyakorlás

A Futóverseny megoldásának vége:
# 7. feladat
# Egyesületenként hány sportoló indult a versenyeken?
SELECT `egyesulet`.`nev`, count(`indulas`.`SportoloId`)
FROM `egyesulet`
inner JOIN `sportolo` ON `egyesulet`.`egyesuletId` = `sportolo`.`EgyesuletId`
inner JOIN `indulas` ON `sportolo`.`SportoloId` = `indulas`.`SportoloId`
GROUP BY `egyesulet`.`nev`


# 8. feladat - Könnyített:
# Kik végeztek a Föld alatti futás nevű versenyen, és mennyi volt az idejük?
SELECT `sportolo`.`Vezeteknev`, `sportolo`.`Keresztnev`, `indulas`.`EredmenyPerc`, `indulas`.`EredmenyMasodperc`
FROM `sportolo`
INNER JOIN `indulas` ON `sportolo`.`SportoloId` = `indulas`.`SportoloId`
INNER JOIN `verseny` ON `verseny`.`VersenyId` = `indulas`.`VersenyId`
WHERE (`verseny`.`Nev` = "Föld alatti futás")


# 8. feladat
#Kik végeztek a Föld alatti futás nevű versenyen az átlagos menetidőnél hosszabb idő alatt és mennyi volt az idejük?
SELECT `sportolo`.`Vezeteknev`, `sportolo`.`Keresztnev`, `indulas`.`EredmenyPerc`, `indulas`.`EredmenyMasodperc`
FROM `sportolo`
INNER JOIN `indulas` ON `sportolo`.`SportoloId` = `indulas`.`SportoloId`
INNER JOIN `verseny` ON `verseny`.`VersenyId` = `indulas`.`VersenyId`
WHERE (`verseny`.`Nev` = "Föld alatti futás") AND (((`indulas`.`EredmenyPerc`+ `indulas`.`EredmenyMasodperc`/60)) <
SELECT (AVG(`indulas`.`EredmenyPerc`+ `indulas`.`EredmenyMasodperc`/60) FROM `indulas`))

2018. február 26., hétfő

2018.02.26. Adatbázis-kezelés gyakorlás

Városi futóverseny feladat megoldása.
A nehezebb feladatokhoz segítséget adtam az .sql fájlban. Az utolsó feladatnál csak a könnyített verziót kell megírni.

Eddig megoldott feladatok:
# 1. feladat:
# Adatbázis létrehozása?
CREATE DATABASE futoverseny
DEFAULT CHARACTER SET utf8
COLLATE utf8_hungarian_ci;


# 3. feladat:
# Mikor született Pataki Ramóna?
SELECT `sportolo`.`SzuletesiEv`
FROM `sportolo`
WHERE (( `Vezeteknev` = "Pataki") AND ( `Keresztnev` = "Ramóna"))

# 4. feladat:
# Hogyan hívják az 1977 és annál régebben született női sportolókat (teljes névvel)?
SELECT `sportolo`.`Vezeteknev`, `sportolo`.`Keresztnev`
FROM `sportolo`
WHERE ((`SzuletesiEv` <= 1977) AND ( `Nem` = "nő"))

# 5. feladat
# Mennyi az átlagos életkora a férfi sportolóknak?
SELECT avg(2018-SzuletesiEv)
FROM `sportolo`
GROUP BY `Nem`
HAVING (`Nem` = "férfi")

# 6. feladat
# Hány nem felnőtt korú versenyzője van a PSE sportegyesületnek?
SELECT count(*)
FROM `egyesulet`
INNER JOIN `sportolo` ON `egyesulet`.`egyesuletId` = `sportolo`.`EgyesuletId`
where ((2018-`sportolo`.`SzuletesiEv`)<=18)
GROUP BY `egyesulet`.`nev`
having ( `egyesulet`.`nev` = "PSE")

2018.02.26. Programozás gyakorlás

Helyjegy feladat folytatása
A feladatmegoldásból kihagyjuk azt a részt, ahol kerekíteni kell a jegy árát.
Segítség:

2. feladat
- ki kell írni az ules tömb utolsó elemét
- ki kell írni a következő számított értéket: a leszall tömb utolsó eleméből vonjuk ki a felszall tömb utolsó elemét
- utolsó elemre példa: ules[ules.Length-1]

3. feladat
- utasok sorszáma: az ules tomb indexe+1
- írjuk ki azokat az indexeket, ahol a felszall tomb adott elem nulla és a leszall tomb adott eleme egyenlo a hossz-szal (172)

4. feladat
- a jegyek árát úgy számoljuk ki, hogy a leszálló kilométerből kivonjuk a felszálló kilométert, ezt elosztjuk tízzel, és megszorozzuk a fizetendo-vel
- ezt minden tombelemnél el kell végezni, és egy változóban gyűjteni (összegzés tétele)
- a végén kiírni

5. feladat
- maximumkeresést kell írni, de nem az első, hanem a második maximumot keressük. Tudjuk, hogy a maximum a hossz-szal egyenlő (172), ezért a maximumkeresésnél ezt az egy értéket zárjuk ki a megoldásból, ha megtaláltuk
- ha megvan, mi a 172 alatti, második maximum, akkor végig kell menni a tömbön, és ezeknél az értékeknél megszámolni a felszall és a leszall tömb elemeit (megszámlálás tétele)


2018. február 23., péntek

2018.02.23. Programozás gyakorlás

Helyjegy feladat folytatása.

Az 1. feladat egy lehetséges megoldása Tomi programja alapján:

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

namespace helyjegy
{
    class Program
    {
        static int jegyek;
        static int hossz;
        static int fizetendo;

        static int[] ules; //definiáljuk a tömböket, de nem hozzuk őket létre valójában
        static double[] felszall;
        static double[] leszall;

        static void Beolvas()
        {
            int i = 0;
            bool elso = true;
            StreamReader sr = new StreamReader("eladott.txt");
            string[] atmeneti;
            while (!sr.EndOfStream)
            {
                atmeneti = sr.ReadLine().Split(' ');
                if (elso)
                {
                    jegyek = Convert.ToInt32(atmeneti[0]);
                    hossz = Convert.ToInt32(atmeneti[1]);
                    fizetendo = Convert.ToInt32(atmeneti[2]);
                    elso = false;
                    //megszületett, hány eleműek legyenek a tömbök, így már létre tudjuk őket hozni:
                    ules = new int[jegyek];
                    felszall = new double[jegyek];
                    leszall = new double[jegyek];
                }
                else
                {
                    ules[i] = Convert.ToInt32(atmeneti[0]);
                    felszall[i] = Convert.ToDouble(atmeneti[1]);
                    leszall[i] = Convert.ToDouble(atmeneti[2]);
                    //ellenőrzésképpen ki lehet írni, aztán megjegyzésbe tenni:
                    //Console.WriteLine("{0} {1} {2}", ules[i], leszall[i], felszall[i]);
                    i++;
                }
            }
            sr.Close();

        }

        static void Main(string[] args)
        {
            Console.WriteLine("1.Feladat: ");
            Beolvas();
            Console.ReadLine();
        }
    }
}




2018. február 21., szerda

2018.02.21. Programozás gyakorlás

Elkezdtük a Helyjegy feladatot.

2018.02.20. Operációs rendszerek témakör

Végigvettük a témakört, számonkérés: hétfőn pénteken (03.02.)

2018.02.20. Adatbázis-kezelés gyakorlás

Határátkelők befejezése, ellenőrzése.
1.feladat:
CREATE DATABASE `allomas` 
DEFAULT CHARACTER SET utf8 
COLLATE utf8_hungarian_ci;

3.feladat:
SELECT `hatar`.`magyarh`, `hatar`.`szomszedh`
FROM `hatar`
WHERE ((`hatar`.`orszag` = "Szerbia") AND (`hatar`.`tipus`= "közúti"))
ORDER BY `magyarh` ASC

4.feladat:

SELECT `hatar`.`magyarh`
FROM `telepules`
INNER JOIN `hatar` ON `telepules`.`nev` = `hatar`.`magyarh`
WHERE ( `telepules`.`tipus` = "község")
GROUP BY `magyarh`

5.feladat:
SELECT `hatar`.`orszag`, count(`hatar`.`tipus`) AS "Vasúti átkelők száma"
FROM `hatar`
WHERE ( `hatar`.`tipus` = "vasúti")
GROUP BY `orszag`
ORDER BY 2 DESC

6.feladat:
SELECT `telepules`.`megye`, count(`hatar`.`magyarh`) as "összesen"
FROM `telepules`
INNER JOIN `hatar` ON `telepules`.`nev` = `hatar`.`magyarh` 
GROUP BY `megye`
ORDER BY 2 ASC

7.feladat:
SELECT `telepules`.`megye`
FROM `telepules`
INNER JOIN `hatar` ON `telepules`.`nev` = `hatar`.`magyarh` 
WHERE (( `telepules`.`tipus` = "város" or `telepules`.`tipus`="%megyei jogú város"))
GROUP BY `megye`
Order BY count(`hatar`.`magyarh`) DESC
limit 1

2018. február 19., hétfő

2018.02.19. Adatbázis-kezelés

SQL kód megértése a Könyvtár és a Papírgyűjtés feladat segítségével.

2018. február 14., szerda

2018.02.13.A legutóbbi programozás feladatsor megoldása


1. Hozz létre egy szövegfájlt, amiben 5 autó következő 3 adatát tárolod:
- autó gyártója és típusa
- évjárat
- futott km

2. Olvasd be a fájlt, és tárold 3 tömbben az adatokat.
3. Írj egy kiíró metódust, ami kiírja a képernyőre az egyes autók összetartozó adatait; egy sorba egy autót.
4. Írj egy paraméteres kiíró metódust, ami kiírja a főprogramban választható szám tömb adatait.
5. Írj egy függvényt, aminek segítségével a főprogram kiírja a legtöbb kilométert futott autóhoz tartozó futott km értékét.
6. Írj egy paraméteres függvényt, aminek segítségével a főprogram kiírja az ABC-ben legelöl levő autó gyártóját és típusát. (Az eredeti sorrendet a tömbben ne változtasd meg.)
7. Írj egy függvényt, ami kiszámolja a futott kilométerek átlagát.
8. Írj egy függvényt, ami egy új tömbbe átmásolja a 2000 előtti évjáratú autók évjáratát. A függvény adja vissza a főprogramnak, hogy hány adatot másolt át. Az átmásolt adatokat írasd ki a 4. feladatban megírt metódussal.
9. Írd ki egy új fájlba (info.txt) az autók összesített futott km értékét. A szöveg: „ 501234 km-t futott együtt az összes autó.” (A szám helyére a kiszámolt érték kerül.) Ne zárd le a fájlt, mert a következő feladat is abba ír.
10. Írd ki az előző fájl következő sorába azt az információt, hogy az autók között van-e legalább egy FORD. (Használd az eldöntés tételét. A kiírás szövege: „Van Ford”. / ”Nincs Ford.”) Zárd le a fájlt.
11. Vizsgáld meg az autók futott km adatait. Írd ki egy új fájlba (szerviz.txt) minden autó szöveges adatát, és mellé egy szöveget – a következők szerint. Ahol a futott km érték 100000 km fölötti, az az autó szervízbe megy. Ahol 50000 és 100000 között van, azt írod mellé, hogy karbantartás; és ami 50000 alatt van, azt kell írni, hogy nincs teendő. Ettől eltérő érték esetén jelezzünk hibát.
Cseri Ádám javított megoldása:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace autooo
{
    class SajatOsztaly
    {
        public const int db = 5;
        public string[] autoNev = new string[db];
        public int[] autoEvjarat = new int[db];
        public int[] futottKm = new int[db];
        public int i;
        public int j;

        public int[] masEvjarat = new int[db];
        public double atlag;
        public int osszeg;
        public bool log;

        public void F2beolvas()
        {
            StreamReader sr = new StreamReader("auto.txt");
            string[] atmeneti;

            i = 0;
            while (!sr.EndOfStream)
            {
                atmeneti = sr.ReadLine().Split(',');
                autoNev[i] = atmeneti[0];
                autoEvjarat[i] = Convert.ToInt32(atmeneti[1]);
                futottKm[i] = Convert.ToInt32(atmeneti[2]);
                i++;
            }

            sr.Close();
        }

        public void F3kiir()
        {
            j = 0;
            while (j < i)
            {
                Console.WriteLine("Márka: {0}. Évjárat: {1}. Futott km: {2}.", autoNev[j], autoEvjarat[j], futottKm[j]);
                j++;
            }
        }

        public void F4kiir(int index)
        {
            switch (index)
            {
                case 1:
                    for (int i = 0; i < db; i++)
                    {
                        Console.WriteLine("A név-gyártó tömb {0}. eleme: {1}", i, autoNev[i]);               
                    }                   
                    break;
                case 2:
                    for (int i = 0; i < db; i++)
                    {
                        Console.WriteLine("Az évjárat tömb {0}. eleme: {1}", i, autoEvjarat[i]);               
                    }
                    break;
                case 3:
                    for (int i = 0; i < db; i++)
                    {
                        Console.WriteLine("A futott km tömb {0}. eleme: {1}", i, futottKm[i]);               
                    }
                    break;
                case 4:
                    for (int i = 0; i < db; i++)
                    {
                        Console.WriteLine("A 2000 előtti évjáratok tömbje {0}. eleme: {1}", i, masEvjarat[i]);
                    }
                    break;
                default:
                    Console.WriteLine("Hibás tömb szám.");
                    break;
            }      

        }

        public int F5legtobbKm()
        {
            int maxKm = 0;

            for (int i = 0; i < futottKm.Length; i++)
            {
                if (futottKm[i] > maxKm)
                    maxKm = futottKm[i];
            }

            return maxKm;
        }

        public string F6ABCelso(string[] markaTipus)
        {
            string[] sorrendbenTomb = new string[markaTipus.Length];

            for (int i = 0; i < markaTipus.Length; i++)
            {
                sorrendbenTomb[i] = markaTipus[i];
            }

            Array.Sort(sorrendbenTomb);

            return sorrendbenTomb[0];
        }

        public double F7atlag()
        {
            atlag = 0;

            for (int i = 0; i < futottKm.Length; i++)
            {
                atlag += futottKm[i];
            }
            atlag /= futottKm.Length;

            return atlag;
        }

        public int F82000elotti()
        {
            j = 0;
            for (int i = 0; i < autoEvjarat.Length; i++)
            {
                if (autoEvjarat[i] < 2000)
                {
                    masEvjarat[j] = autoEvjarat[i];

                    j++;
                }
            }
            F4kiir(4);
            return j;
        }

        public void F9fajlbair()
        {
            osszeg = 0;
            for (int i = 0; i < futottKm.Length; i++)
            {
                osszeg += futottKm[i];
            }
        }

        public bool F10eldontesFORDe()
        {
            log = false;

            for (int i = 0; i < autoNev.Length; i++)
            {
                if (autoNev[i].Contains("Ford"))
                    log = true;
            }
            return log;
        }

        //11. Vizsgáld meg az autók futott km adatait. Írd ki egy új fájlba (szerviz.txt) minden autó szöveges adatát,
        //és mellé egy szöveget – a következők szerint.
        //Ahol a futott km érték 100000 km fölötti, az az autó szervízbe megy. Ahol 50000 és 100000 között van, azt írod mellé, hogy karbantartás;
        //és ami 50000 alatt van, azt kell írni, hogy nincs teendő. Ettől eltérő érték esetén jelezzünk hibát. Ezt a feladatot gyakorlásképpen
        //kétféle módszerrel is oldd meg: egymásba ágyazott kétágú szelekciókkal, illetve többágú szelekcióval.
        //Mindkét módszerrel kiszámolt eredményhalmaz kerüljön a fájlba.

        public void F11szerviz()
        {
            StreamWriter sw = new StreamWriter("szerviz.txt");

            for (int i = 0; i < autoNev.Length; i++)
            {
                if (futottKm[i] >= 100000)
                    sw.WriteLine("{0} szervízbe megy", autoNev[i]);
                else
                {
                    if (50000 < futottKm[i] && futottKm[i] < 100000)
                        sw.WriteLine("{0} karbantartás", autoNev[i]);
                    else
                    {
                        if (futottKm[i] <= 50000)
                            sw.WriteLine("{0}, nincs teendő", autoNev[i]);
                        else
                            sw.WriteLine("Hiba");
                    }
                }
            }       

            sw.Close();
        }
    }

    class Program
    {


        static void Main(string[] args)
        {
            SajatOsztaly s = new SajatOsztaly();
            //             1. Hozz létre egy szövegfájlt, amiben 5 autó következő 3 adatát tárolod:
            //- autó gyártója és típusa
            //- évjárat
            //- futott km

            //2. Olvasd be a fájlt, és tárold 3 tömbben az adatokat.
            Console.WriteLine("2. feladat: ");

            s.F2beolvas();

            Console.ReadLine();
            //3. Írj egy kiíró metódust, ami kiírja a képernyőre az egyes autók összetartozó adatait; egy sorba egy autót.
            Console.WriteLine("3. feladat: ");

            s.F3kiir();

            Console.ReadLine();
            //4. Írj egy paraméteres kiíró metódust, ami kiírja a főprogramban választható szám tömb adatait.
            Console.WriteLine("4. feladat: ");

            Console.Write("Hanyas számú tömböt szeretnéd kiirattatni? (1/2/3) ");
            int szam = Convert.ToInt16(Console.ReadLine());

            s.F4kiir(szam);

            Console.ReadLine();
            //5. Írj egy függvényt, aminek segítségével a főprogram kiírja a legtöbb kilométert futott autóhoz tartozó futott km értékét.
            Console.WriteLine("5. feladat: ");

            Console.WriteLine("A legtöbb km: {0}", s.F5legtobbKm());

            Console.ReadLine();
            //6. Írj egy paraméteres függvényt, aminek segítségével a főprogram kiírja az ABC-ben legelöl levő autó gyártóját és típusát. (Az eredeti sorrendet a tömbben ne változtasd meg.)
            Console.WriteLine("6. feladat: ");

            Console.WriteLine("Az ABC-ben legelöl lévő autó márkája és típusa: {0}", s.F6ABCelso(s.autoNev));

            Console.ReadLine();
            //7. Írj egy függvényt, ami kiszámolja a futott kilométerek átlagát.
            Console.WriteLine("7. feladat: ");

            Console.WriteLine("A futott km-ek átlaga: {0}", s.F7atlag());

            Console.ReadLine();
            //8. Írj egy függvényt, ami egy új tömbbe átmásolja a 2000 előtti évjáratú autók évjáratát.
            //A függvény adja vissza a főprogramnak, hogy hány adatot másolt át. Az átmásolt adatokat írasd ki a 4.feladatban megírt metódussal.
            Console.WriteLine("8. feladat: ");

            Console.WriteLine("A program {0} db adatot másolt át", s.F82000elotti());

            Console.ReadLine();

            //             9. Írd ki egy új fájlba (info.txt) az autók összesített futott km értékét.
            //A szöveg: „ 501234 km-t futott együtt az összes autó.” (A szám helyére a kiszámolt érték kerül.)
            //Ne zárd le a fájlt, mert a következő feladat is abba ír.
            Console.WriteLine("9. feladat: ");

            StreamWriter sw = new StreamWriter("info.txt");
            s.F9fajlbair();
            sw.WriteLine("{0} km-t futott együtt az összes autó.", s.osszeg);

            Console.ReadLine();
            //10. Írd ki az előző fájl következő sorába azt az információt, hogy az autók között van-e legalább egy FORD.
            //(Használd az eldöntés tételét. A kiírás szövege: „Van Ford”. / ”Nincs Ford.”) Zárd le a fájlt.
            Console.WriteLine("10. feladat: ");

            if (s.F10eldontesFORDe())
                sw.Write("Van Ford");
            else sw.Write("Nincs Ford");

            sw.Close();

            Console.ReadLine();
            //11. Vizsgáld meg az autók futott km adatait. Írd ki egy új fájlba (szerviz.txt) minden autó szöveges adatát,
            //és mellé egy szöveget – a következők szerint.
            //Ahol a futott km érték 100000 km fölötti, az az autó szervízbe megy. Ahol 50000 és 100000 között van, azt írod mellé, hogy karbantartás;
            //és ami 50000 alatt van, azt kell írni, hogy nincs teendő. Ettől eltérő érték esetén jelezzünk hibát.
            Console.WriteLine("11. feladat: ");

            s.F11szerviz();

            Console.ReadLine();
        }
    }
}