2022. december 8., csütörtök

2022.12.09. Programozás/1- Ismétlés + a kiadott feladatok megoldása (Domino Day, stb.)

1. óra: Helyettesítés utáni ismétlés: többágú szelekció, egymásba ágyazott kétágú szelekció gyakorlása. Önállóan megoldott feladatok ellenőrzése.

A kiadott feladatok néhány lehetséges megoldását it találod:

Domino Day egy lehetséges megoldása
using System;
namespace DominoDay
{
    class Program
    {
        static void Main(string[] args)
        {
            const double dobozTerfogat = 50 * 10 * 80 * 10 * 40 * 10;
            const double elsoTerfogat = 50 * 30 * 6;
            const double elsoDarabDouble = dobozTerfogat * 15 / elsoTerfogat;
            const int elsoDarabInt = (int)elsoDarabDouble; //típuskényszerítés: arra "kényszerítjük",
            //hogy int legyen, ami azzal jár, hogy elveszítjük
            //a tizedes részt - itt éppen ez a cél, így kerekítünk
            //konstans értékadásánál ugyanis nem használhatjuk a Convert függvényt
            //ha nem konstans, akkor használhatjuk:
            int elsoDarabKonvertalva = Convert.ToInt32(elsoDarabDouble);
            /////////////////////////////////////////////////////////////////////////////
            const double masodikTerfogat = 40 * 25 * 5 ;
            const double masodikDarabDouble = dobozTerfogat * 15 / masodikTerfogat;
            const int masodikDarabInt = (int)masodikDarabDouble; //típuskényszerítés
            /////////////////////////////////////////////////////////////////////////////
            const double harmadikTerfogat = 70 * 35 * 8;
            const double harmadikDarabDouble = dobozTerfogat * 15 / harmadikTerfogat;
            const int harmadikDarabInt = (int)harmadikDarabDouble; //típuskényszerítés
            /////////////////////////////////////////////////////////////////////////////
            Console.WriteLine("Első domino: 50 * 30 * 6");
            Console.WriteLine("Második domino: 40 * 25 * 5");
            Console.WriteLine("Harmadik domino: 70 * 35 * 8");
            Console.Write("Melyik fajta dominó érkezett ma? (első/második/harmadik) ");
            string fajta = Console.ReadLine();
            if (fajta == "első")
            {
                Console.WriteLine("Ennyi dominó van a dobozban: {0}", elsoDarabInt); // egész számot kapunk, nincs kerekítve, csak levágtuk a tört részt
                //vagyis megkaptuk a szám egész részét
                Console.WriteLine("További számítások (nem a feladat része):");
                Console.WriteLine(elsoDarabDouble); //tört számot kapunk
                Console.WriteLine(elsoDarabKonvertalva); //egész számot kapunk, kerekítve
                Console.WriteLine("{0:0}", elsoDarabDouble); //csak megformáztuk a kiírást, kerekíti a számot egésszé
                Console.WriteLine("{0:0.000}", elsoDarabDouble); //csak megformáztuk a kiírást, kerekíti a számot 3 tizedesjegyre
            }
            else      
            {
                if (fajta == "második")
                {
                    Console.WriteLine("Ennyi dominó van a dobozban: {0}", masodikDarabInt);
                }
                else
                {
                    if (fajta == "harmadik")
                    {
                        Console.WriteLine("Ennyi dominó van a dobozban: {0}", harmadikDarabInt);
                    }
                    else
                    {
                        Console.WriteLine("Szövegértési, vagy szövegalkotási problémád van. Fordulj szakemberhez :)");
                    }
                }
            }
            Console.ReadLine();
        }
    }
}
Léggömbhámozás egy lehetséges megoldása
            Console.WriteLine("Mennyi léggömböt tudtál meghámozni 10 perc alatt?   ");
            int lufi = Convert.ToInt32(Console.ReadLine());
            if (lufi > 20)
                Console.WriteLine("Kiváló");
            else
            {
                if (lufi > 10)
                    Console.WriteLine("Közepes");
                else
                {
                    Console.WriteLine("Gyenge");
                    Console.WriteLine("\nMennyi pénzt áldozott a gép fejlesztésére?");
                    int penz = Convert.ToInt32(Console.ReadLine());
                    if (penz > 0 && penz <= 10000)
                        Console.WriteLine("Kevés");
                    else
                    {
                        if (penz < 20000)
                            Console.WriteLine("Pedig ez elég lett volna.");
                        else
                            Console.WriteLine("Teljesen fölösleges ennyi pénzt  erre elkölteni!");
                    }
                }
            }
Léggömbhámozás még egy lehetséges megoldása
            Console.Write("Kérem írja be, hány léggömböt hámoztak meg: ");
            int leggomb = Convert.ToInt32(Console.ReadLine());
            if (leggomb > 20)
                Console.WriteLine("Ez a mennyiség kiváló");
            else
                if (leggomb > 10)
                    Console.WriteLine("Ez a mennyiség közepes");
                else
                    if (leggomb <= 10)
                    {
                        Console.WriteLine("Ez a mennyiség gyenge");
                        Console.Write("Mennyi pénzt költött fejlesztésre? ");
                        int penz = Convert.ToInt32(Console.ReadLine());
                        if (penz <= 10000)
                            Console.WriteLine("Ez az összeg kevés rá");
                        else
                            if (penz <= 20000)
                                Console.WriteLine("Ennek az összegnek elég kell lennie");
                            else
                                if (penz > 20000)
                                    Console.WriteLine("Ez az összeg már felesleges");
                    }
                    else
                        Console.WriteLine("Hibás szám");
Fuvolaverseny egy lehetséges megoldása
Console.Title = "Megyei fuvolaverseny";
            Console.WriteLine("Fuvolavereny\n----------\n");
            //A megyei fuvolaversenyre jelentkeznek a versenyzők.
            //Az alapján rendezik a versenyzőket kategóriákba, hogy
            //hány évig tanultak zenét.
            //I. kategória: 2, vagy 3 évig tanult zenét
            //II. kategória: 4, vagy 5 évig tanult zenét
            //III. kategória: 6, vagy 7 évig tanult zenét
            //A fenti intervallumokat a tanult módon, egyszerű feltétellel add meg.
            //Feladat:
            //Kérd be, hány évig tanult a jelentkező zenét!
            Console.Write("A versenyző hány évig tanulta a zenét?:  ");
            int ev = Convert.ToInt32(Console.ReadLine());
            //Írd ki, melyik kategóriába tartozik!
            if (ev > 1 && ev < 4)
            {
                Console.WriteLine("A versenyző az I. csoportba tartozik!");
            }
            else
            {
                if (ev > 6)
                {
                    Console.WriteLine("A versenyző a II. csoportba tartozik!");
                }
                else
                {
                    if (ev > 8)
                    {
                        Console.WriteLine("A versenyző a III. csoportba tartozik!");
                    }
                }
            }
            //Kérd be, hány pontot kapott (0-60 között) a versenyen.
            Console.Write("A versenyző hány pontot kapott a versenyen?:  ");
            int pont = Convert.ToInt32(Console.ReadLine());
            //Ha 50 pont fölött kapott, írd ki, hogy továbbjutott
            //az országos versenyre.
            if (pont < 0 || pont > 60)
            {
                Console.WriteLine("Hibás pontszám!");
            }
            else
            {
                if (pont > 50)
                {
                    Console.WriteLine("A versenyző továbbjutott az országos versenyre!");
                    Console.Write("A versenyző kisérőtanárral utazik vagy szülővel? (kisérőtanár/szülő):  ");
                    string utazas = Console.ReadLine();
                    if (utazas == "szülő" || utazas == "kisérőtanár")
                    {
                        if (utazas == "szülő")
                        {
                            Console.Write("Kérem az egyik szülő telefonszámát:  ");
                            string teloszam = Console.ReadLine();
                        }
                        else
                        {
                            Console.Write("Kérem a kisérőtanár nevét:  ");
                            string kiserotanar = Console.ReadLine();
                        }
                    }
                    else
                    {
                        Console.WriteLine("Hibás bevitel!");
                    }
                }
                else
                {
                    Console.WriteLine("A versenyző NEM jutott tovább az országos versenyre! Sajnáljuk! :(");
                    Console.Write("Kérem az iskolája nevét és címét: ");
                    string iskolaelerhet = Console.ReadLine();
                }
            }
            //Egyébként pedig írd ki, hogy nem jutott tovább.
            //Ha továbbjutott, kérdezd meg, hogy a szüleivel utazik, vagy kísérőtanárral.
            //Ha a szüleivel utazik, kérd be az egyik szülő telefonszámát.
            //Ha kísérőtanárral utazik, kérdezd meg a tanára nevét.
            //Ha nem jutott tovább, akkor kérd be az iskolája nevét és címét
            //mert oda fogják küldeni a vigaszdíjat.
            //Ha ez kész, egészítsd ki a megoldást hibaellenőrzéssel.
            Console.ReadLine();
Fuvolaverseny még egy lehetséges megoldása
//A megyei fuvolaversenyre jelentkeznek a versenyzők.
            //Az alapján rendezik a versenyzőket kategóriákba, hogy
            //hány évig tanultak zenét.
            //I. kategória: 2, vagy 3 évig tanult zenét
            //II. kategória: 4, vagy 5 évig tanult zenét
            //III. kategória: 6, vagy 7 évig tanult zenét
            //A fenti intervallumokat a tanult módon, egyszerű feltétellel add meg.
            //Feladat:
            //Kérd be, hány évig tanult a jelentkező zenét!
            Console.Write("Hány évig tanult zenét? : ");
            int tanulev = Convert.ToInt32(Console.ReadLine());
            //Írd ki, melyik kategóriába tartozik!
            while (!(2 <= tanulev && tanulev <= 7))
            {
                Console.WriteLine("Rossz értéket adott meg!");
                Console.Write("Az érték újra: ");
                tanulev = Convert.ToInt32(Console.ReadLine());
            }
            if (tanulev == 2 || tanulev == 3)
            {
                Console.WriteLine("Az I. kategóriába tartozik");
            }
            else
                if (tanulev == 4 || tanulev == 5)
                {
                    Console.WriteLine("Az II. kategóriába tartozik");
                }
                else
                    if (tanulev == 6 || tanulev == 7)
                    {
                        Console.WriteLine("Az III. kategóriába tartozik");
                    }
            //Kérd be, hány pontot kapott (0-60 között) a versenyen.
            Console.Write("Hány pontot kapott a versenyen? : ");
            int pontok = Convert.ToInt32(Console.ReadLine());
            //Ha 50 pont fölött kapott, írd ki, hogy továbbjutott
            //az országos versenyre.
            //Egyébként pedig írd ki, hogy nem jutott tovább.
            while (!(0 <= pontok && pontok <= 60))
            {
                Console.WriteLine("Rossz értéket adott meg!");
                Console.Write("Az érték újra: ");
                pontok = Convert.ToInt32(Console.ReadLine());
            }
            if (50 < pontok)
            {
                Console.WriteLine("Továbbjutott");
                Console.WriteLine();
                Console.WriteLine("A kivel utazik? (szülők ; kísérőtanár)");
                string kivel = Console.ReadLine().ToLower();
                while (kivel != "szülők" || kivel != "kísérőtanár")
                {
                    Console.WriteLine("Rossz értéket adott meg!");
                    Console.Write("Az érték újra: ");
                    kivel = Console.ReadLine().ToLower();
                }
                if (kivel == "szülők")
                {
                    Console.Write("Kérem az egyik szülő telefonszámát: ");
                    string telszam = Console.ReadLine();
                }
                else
                {
                    Console.Write("Kérem a tanár nevét: ");
                    string tanarnev = Console.ReadLine();
                }
            }
            else
            {
                Console.WriteLine("Nem jutott tovább");
                Console.Write("Kérem az iskola nevét és címét: ");
                string iskola = Console.ReadLine();
            }
            Console.WriteLine("Viszlát!");
            //Ha továbbjutott, kérdezd meg, hogy a szüleivel utazik, vagy kísérőtanárral.
            //Ha a szüleivel utazik, kérd be az egyik szülő telefonszámát.
            //Ha kísérőtanárral utazik, kérdezd meg a tanára nevét.
            //Ha nem jutott tovább, akkor kérd be az iskolája nevét és címét
            //mert oda fogják küldeni a vigaszdíjat.
            //Ha ez kész, egészítsd ki a megoldást hibaellenőrzéssel.
            Console.ReadLine();
Túlsúly feladat egy lehetséges megoldása
            //            Írj programot, amely bekéri egy felnőtt férfi testmagasság(cm - ben) és testsúly(kg-ban) adatait. 
            //Ha a magasság 100 cm fölötti, akkor megvizsgálja, hogy túlsúlyos-e: ha a kg - ban mért súlya nagyobb, mint a cm - ben mért magasság 100 fölötti része, akkor kiírja: "Túlsúlyos, fogynia kell!". 
            //Ha a magasság 100, vagy az alatti érték, akkor írja ki a program, hogy "Gyerekekkel nem foglalkozom!" 
            double hundredValue = 100;
            //Pontosítsuk a feladatot: Ha 100 cm fölött van a magasság és nem túlsúlyos, akkor mit tegyünk? 
            Console.Write("Üdv a programban! Kérem adja meg a testmagasságát!(csak egy szám ami cm-ben értelmezendő)--> ");
            double bodyHeight = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine();
            if (hundredValue > bodyHeight)
            {
                Console.WriteLine("Gyerekekkel nem foglalkozom!");
            }
            else
            {
                Console.Write("Kérem adja meg a testsúlyát!(csak egy szám ami kg-ban értelmezendő)--> ");
                double bodyWeight = Convert.ToDouble(Console.ReadLine());
                if (bodyWeight > bodyHeight - 100)
                {
                    Console.WriteLine("Túlsúlyos! Fogynia kell!");
                }
                else
                {
                    Console.WriteLine("Egészséges vagy!");
                }
            }
Dátum ellenőrző egy lehetséges megoldása
Console.WriteLine("Kerem irja be egy honap sorszamat");
            int honap = Convert.ToInt32(Console.ReadLine());
            if (honap < 1 || honap > 12)
            {
                Console.WriteLine("Nem jó intervallumba esik a hónap sorszáma.");
            }
            else
            {
                Console.WriteLine("Kerem irja be a honaphoz egy nap sorszamat.");
                int nap = Convert.ToInt32(Console.ReadLine());
                string hiba = "Nem jó intervallumba esik a nap sorszáma.";
                if (honap == 1 || honap == 4 || honap == 6 || honap == 9 || honap == 11)
                {
                    if (!(nap >= 1 && nap <= 30)) //vagy: if (nap > 30 || nap < 1)
                    {
                        Console.Write(hiba);
                    }
                }
                else
                {
                    if (honap == 3 || honap == 5 || honap == 7 || honap == 8 || honap == 10 || honap == 12)
                    {
                        if (!(nap >= 1 && nap <= 31)) //vagy: if (nap < 1 || nap > 31))
                        {
                            Console.Write(hiba);
                        }
                    }
                    else
                    {
                        if (honap == 2)
                        {
                            if (!(nap >= 1 && nap <= 28)) //vagy: if (nap < 1 || nap > 28))
                            {
                                Console.Write(hiba);
                            }
                        }
                    }
                }
            }
Feladványok egy lehetséges megoldása Mátétól
Console.Write("Milyen feladatot szeretne megoldani? (matek, logikai, szöveges, karakteres):  ");
            string valasz = Console.ReadLine();
            switch (valasz)
            {
                case "matek":
                    Console.Write("Adjon meg egy számot:  ");
                    int szam1 = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Adjon meg még egy számot:  ");
                    int szam2 = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Adja össze a két számot!  ");
                    int eredmeny = Convert.ToInt32(Console.ReadLine());
                    int gep = szam1 + szam2;
                    if (gep == eredmeny)
                    {
                        Console.WriteLine("Gratulálok, jól számoltál");
                    }
                    else
                        Console.WriteLine("Matek egyes");
                    break;
                case "logikai":
                    Console.Write("Ha két ember beszélget, akkor nem tud három elefánt fejjel lefelé lógva együtt balettozni, igaz?  (true/false)");
                    bool valasz2 = Convert.ToBoolean(Console.ReadLine());
                    bool gep2 = true;
                    if (gep2 == valasz2)
                    {
                        Console.WriteLine("Jól beszélsz öcsém");
                    }
                    else
                        Console.WriteLine("Hát komám, neked a fejedben az agyrágó bogár éhen pusztulna");
                    break;
                case "karakteres":
                    Console.Write("Mi James Bond monogramjának második betűje? (nagybetűvel!)  ");
                    char valasz3 = Convert.ToChar(Console.ReadLine());
                    char gep3 = 'B';
                    if (gep3 == valasz3)
                    {
                        Console.WriteLine("Helyes válasz");
                    }
                    else
                        Console.WriteLine("Nem talált!");
                    break;
                case "szöveges":
                    Console.Write("Írd le a szlogenemet (mint kiderült, van ilyen ROAD dal is)  ");
                    string valasz4 = Console.ReadLine();
                    string gep4 = "Egyszer élünk";
                    if (gep4 == valasz4)
                    {
                        Console.WriteLine("Gratula");
                    }
                    else
                        Console.WriteLine("Olyan messze van, mint ide Bukarest!");
                    break;
                default:
                    Console.WriteLine("Most dönteni nem tudsz, vagy a helyesírással vannak gondok?");
                    break;
            }
Múzeum egy lehetséges megoldása
Console.Title = "Múzeum";
            Console.WriteLine("Múzeum");
            Console.WriteLine("-------------\n");
            //Egy múzeumban a soron következő kiállításra folyamatosan
            //szállítják a festményeket. A múzeum 3 termet ad bérbe erre a célra.
            //Csontváry terem: 18. századi festmények
            //Zichy terem: 19. századi festmények
            //Munkácsy terem: 20. századi festmények
            //A 18-19. századi festmények csak magyar festőtől származhatnak.
            //A 20. századi festmények közül van magyar és külföldi kategória is.
            //A festmények kiállításáért bérleti díjat kell fizetni, képenként 5000 forintot.
 
            //Feladat:
            //Kérdezd meg a felhasználót, hogy mikor festették az adott képet.
            Console.Write("Mikor festették az adott képet? (év):  ");
            int ev = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();
            //A válaszától függően közöld vele, hogy melyik terembe kell vinnie a képet.
            if (ev >= 1700 && ev < 2000)
            {
                if (ev < 1800)
                {
                    Console.WriteLine("A kép a Csontváry terembe tartozik.");
                }
                else
                {
                    if (ev < 1900)
                    {
                        Console.WriteLine("A kép a Zichy terembe tartozik.");
                    }
                    else
                    {
                        if (ev < 2000)
                        {
                            Console.WriteLine("A kép a Munkácsy terembe tartozik.");
                            Console.Write("\nA képet magyar vagy külföldi festő festette?:  ");
                            string magyarvagykulfold = Console.ReadLine();
                            if (magyarvagykulfold == "magyar"  || magyarvagykulfold == "külföldi" )
                            {
                                if (magyarvagykulfold == "magyar" )
                                {
                                    Console.WriteLine("\nA festmények a galériára kerülnek.");
                                    int berletidij = 5000;
                                    double felar = berletidij * 0.15;
                                    Console.WriteLine("\nA magyar festmények elhelyezése a galérián: {0, 10} Ft/db, ebből a felár {1, 10} Ft/db.", berletidij + felar, felar);
 
                                }
                                else
                                {
                                    Console.WriteLine("A festmények a terem falára kerülnek.");
                                }
                            }
                            else
                            {
                                Console.WriteLine("Hibás adatbevitel! Csak magyar vagy külföldi kategória létezik!");
                            }
 
                        }
                    }
                }
 
            }
 
            //Ha a bekért év nem a 18-20. századba esik, írd ki, hogy másik múzeumba vigyék a képet.
            else
            {
                Console.WriteLine("A képet másik múzeumba kell elvinni.");

2022.12.08. Adatbázis tervezés

Végigelemeztünk további két adatbázis megoldást. A köv. órán továbbmegyünk új anyaggal.

2024.04.25. Időjárás app

 Feladat: Időjárás app - OOP módszerekkel, haladóknak adatkötéssel Az alkalmazás célja, hogy a felhasználók hozzáadjanak és eltávolítsanak v...