2017. február 8., szerda

2017.02.09. Többágú szelekció - megoldott mintafeladat

A többágú szelekciós dolgozat feladatsorához hasonló feladatsort adok itt meg megoldással, hogy ez alapján tudjatok gyakorolni, és a házit megoldani.

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

namespace tobbagu
{
    class Program
    {
        //Ahol érdemes, használj a megoldás során többágú szelekciót!
        //Ha ez nem megy, akkor megoldhatod kétágú szelekciókkal is.

        //Írnod kell egy programot, ami a megadott adatok alapján
        //segít egy negyedikesnek az ország 8 osztályos művészeti szakgimnáziumai közül választani.
        //(rövidített neveket használj: Kisképző Budapesten, Kós Károly Debrecenben, Nyíregyházi Nyíregyházán)

        //Feladat:
        //Tárold struktúrákban a 3 iskola rövidített nevét; a helyseget (pl. Budapest), tanulói létszámát,
        //túljelentkezés arányát (pl. 5, ez ötszörös túljelentkezést jelent);
        //illetve azt, hogy a tanulók hány százaléka kollégista (pl. 12, ami 12%-ot jelent).
        public struct szakgimik
        {
            public string nev;
            public string helyseg;
            public int letszam;
            public int tulJelentkezes;
            public int kollegista;
        }

        static void Main(string[] args)
        {       
            szakgimik kiskepzo = new szakgimik();
            kiskepzo.nev = "Kisképző";
            kiskepzo.helyseg = "Budapest";
            kiskepzo.letszam = 500;
            kiskepzo.tulJelentkezes = 5;
            kiskepzo.kollegista = 70;

            szakgimik kos = new szakgimik();
            kos.nev = "Kós Károly";
            kos.helyseg = "Debrecen";
            kos.letszam = 700;
            kos.tulJelentkezes = 4;
            kos.kollegista = 60;

            szakgimik nyiregyhazi = new szakgimik();
            nyiregyhazi.nev = "Nyíregyházi";
            nyiregyhazi.helyseg = "Nyíregyháza";
            nyiregyhazi.letszam = 350;
            nyiregyhazi.tulJelentkezes = 3;
            nyiregyhazi.kollegista = 65;

            //Írd ki ezeket az adatokat a képernyőre, egy iskola adatait egy "A", "B", "C" idézőjeles betűkkel ellátott sorba.

            Console.WriteLine("\"A\" iskola neve: {0} , létszáma: {1}, túljelentkezés hányszoros: {2}, ennyi kollégista van: {3}, város: {4}\n", kiskepzo.nev, kiskepzo.letszam, kiskepzo.tulJelentkezes, kiskepzo.kollegista, kiskepzo.helyseg);
            Console.WriteLine("\"B\" iskola neve: {0} , létszáma: {1}, túljelentkezés hányszoros: {2}, ennyi kollégista van: {3}, város: {4}\n", kos.nev, kos.letszam, kos.tulJelentkezes, kos.kollegista, kos.helyseg);
            Console.WriteLine("\"C\" iskola neve: {0} , létszáma: {1}, túljelentkezés hányszoros: {2}, ennyi kollégista van: {3}, város: {4}\n", nyiregyhazi.nev, nyiregyhazi.letszam, nyiregyhazi.tulJelentkezes, nyiregyhazi.kollegista, nyiregyhazi.helyseg);


            //Kérdezd meg a negyedikes diákot, hogy melyik iskolát választja.
            //Csak a betűt kelljen beütnie.
            //Írd ki a választásától függően a képernyőre az iskola  nevét, ezen kívül
            //azt, hogy jelenleg hány fő kollégista van az iskolában.
            //Ha valótlan betűt ütött be a diák, írj ki hibaüzenetet.


            Console.Write("Melyik iskolát választod? (A/B/C)");
            char valasztas = Convert.ToChar(Console.ReadLine());

            int kollegista=0; //biztos, hogy egész számra kell kerekíteni, az int típussal ez megoldódik
            string nev = "";
            string varos = "";
            //szebb megoldás: string varos=string.Empty;

            switch (valasztas)
            {
                case 'A':
                    kollegista = kiskepzo.letszam * kiskepzo.kollegista/100;
                    Console.WriteLine("Az iskola neve: {0}\n Kollégisták száma: {1}\n", kiskepzo.nev, kollegista);
                    nev = kiskepzo.nev;
                    varos = kiskepzo.helyseg;
                    break;
                case 'B':
                    kollegista = kos.letszam * kos.kollegista/100;
                    Console.WriteLine("Az iskola neve: {0}\n Kollégisták száma: {1}\n", kos.nev, kollegista);
                    nev = kos.nev;
                    varos = kos.helyseg;
                    break;
                case 'C':
                    kollegista = nyiregyhazi.letszam * nyiregyhazi.kollegista/100;
                    Console.WriteLine("Az iskola neve: {0}\n Kollégisták száma: {1}\n", nyiregyhazi.nev, kollegista);
                    nev = nyiregyhazi.nev;
                    varos = nyiregyhazi.helyseg;
                    break;
                default:
                    Console.WriteLine("Rossz betűt adtál meg. ");
                    break;
            }

            //Ezután kérdezd meg a negyedikest, hogy kér-e kollégiumot: <i/n> formában kérd ezt be.
            //Ha kér, és a választott iskola Budapesten van,
            //akkor írd ki neki, hogy a kollégiumi díj 10000 ft lesz.
            //Ha vidéki, írd ki neki, hogy a kollégiumi díj 7000 ft lesz.

            //Ha nem kér kollégiumot, írd ki, hogy a titkárságon le kell adnia a lakcímét.

            Console.Write("Kérsz kollégiumot? (i/n)");
            char ker = Convert.ToChar(Console.ReadLine());

            switch (ker)
            {
                case 'i':
                    if (varos=="Budapest")
                        Console.WriteLine("A kollégiumi díj 10000 ft lesz.");
                    else
                        Console.WriteLine("A kollégiumi díj 7000 ft lesz.");
                        break;
                case 'n':
                        Console.WriteLine("A titkárságon le kell adnod a lakcímedet.");
                        break;    
                default:
                    Console.WriteLine("Rossz betűt adtál meg. ");
                    break;
            }

            //Ezután kérdezd meg, hogy jelentkezik-e az iskolába.
            //Ha jelentkezik, írd ki:
            //„Üdvözöllek a ………… iskola tanulói között!”
            //A pontozás helyére illeszd be a választott iskola nevét.
            //Ha nem jelentkezik, köszönj el tőle.

            Console.WriteLine("Jelentkezel az iskolába? igen/nem");
            string jelentkezes = Console.ReadLine();

            if (jelentkezes == "igen")
                Console.WriteLine("Üdvözöllek a {0} iskola tanulói között! ", nev);
            else
            {
                if (jelentkezes == "nem")
                    Console.WriteLine("Szia!");
                else
                    Console.WriteLine("Rossz szót adtál meg. ");
            }

            Console.ReadLine();
        }
    }


}