2019. december 10., kedd

2019.12.10., 12. Szelekció gyakorlás

HÁZI FELADAT AZ EDDIGIEKET MEGÉRTENI, ÉS HA SZÜKSÉGES, EGYEDÜL MEGOLDANI ÚJRA.

            //Dolgozat értékelés
            //1. Kérd be egy 100 pontos dolgozat 5 feladatának pontszámait.
            //Lehetnek fél pontok is.
            //2. Összesítsd a pontokat, írd is ki.
            //3. Ezután írd ki, hányast kapott a user.
            //4. Építsd bele a programba az összpontszám-ellenőrzést:
            //ha a kiszámolt összpontszám nem a nulla és 100
            //közé esik, akkor hangjelzés kíséretében írj ki hibaüzenetet,
            //és szakítsd meg a programot.
            //Kérdés1: Hogyan kezelnéd a hibás érték bevitelét?
            //Kérdés2: Mi a hátránya annak, hogy egymás után
            //minden feltételt kiértékel a program?
            //Szorgalmi1: Építsd bele a programba a feladatonkénti
            //pontszámellenőrzést a következők alapján:
            //első feladat: 20 pont
            //második feladat: 15 pont
            //harmadik feladat: 25 pont
            //negyedik feladat: 10 pont
            //ötödik feladat: 30 pont
            //Ha a bekért pontszám nem a nulla és a megfelelő
            //pontszám közé esik, akkor hangjelzés kíséretében
            //írj ki hibaüzenetet, és szakítsd meg a programot. ITT TARTUNK.
            //Szorgalmi2: Légy jó szívű! Add meg a jobb jegyet, ha
            //csak fél pont hiányzik.
            //(Vagy inkább kegyetlen akarsz lenni?:)
            //Szorgalmi3: Add meg a pontok bekérésénél
            //az összetett feltételeket kétféleképpen:
            //úgy, hogy ne legyen benne tagadás, és
            //úgy, hogy legyen benne egy tagadás.


Megoldás elméleti kiegészítéssel:

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

namespace szelekcio1gyak10b11210
{
    class Program
    {
        static void Main(string[] args)
        {
            //int szam = 10;
            //if (szam==10)
            //{
            //    Console.WriteLine("igaz");
            //}

            //Dolgozat értékelés
            //1. Kérd be egy 100 pontos dolgozat 5 feladatának pontszámait.
            //Lehetnek fél pontok is.
            Console.Write("Kérem az 1. feladat elért pontszámát (max. 20): ");
            double elso = Convert.ToDouble(Console.ReadLine());
            //Ez a feltétel VAGY művelettel oldja meg az ellenőrzést:
            //if (elso < 0 || elso > 20)
            //{
            //    Console.WriteLine("Rossz a feladat pontszáma!");
            //    Console.Beep();
            //    Thread.Sleep(1000);
            //    return;
            //}

            //Ez a feltétel tagadott ÉS művelettel oldja meg ugyanazt az ellenőrzést.
            //A két megoldás egyenértékű.
            //Figyeljük meg, hogy a VAGY művelet ÉS-re változott, amikor tagadtuk.
            if (!(elso >= 0 && elso <= 20))    //összetett feltétel, hiszen VAGY/ÉS van benne
            {
                Console.WriteLine("Rossz a feladat pontszáma!");
                Console.Beep();
                Thread.Sleep(1000); //1 másodperc (1000 ezredmásodperc) késleltetés
                return; //azonnal kilép a programból
            }
            Console.Write("Kérem az 2. feladat elért pontszámát (max. 15): ");
            double masodik = Convert.ToDouble(Console.ReadLine());
            if (masodik < 0 || masodik > 15) //összetett feltétel, hiszen VAGY/ÉS van benne
            {
                Console.WriteLine("Rossz a feladat pontszáma!");
                Console.Beep();
                Thread.Sleep(1000);
                return;
            }
            Console.Write("Kérem az 3. feladat elért pontszámát (max. 25):");
            double harmadik = Convert.ToDouble(Console.ReadLine());
            if (harmadik < 0 || harmadik > 25)
            {
                Console.WriteLine("Rossz a feladat pontszáma!");
                Console.Beep();
                Thread.Sleep(1000);
                return;
            }
            Console.Write("Kérem az 4. feladat elért pontszámát (max. 10):");
            double negyedik = Convert.ToDouble(Console.ReadLine());
            if (negyedik < 0 || negyedik > 10)
            {
                Console.WriteLine("Rossz a feladat pontszáma!");
                Console.Beep();
                Thread.Sleep(1000);
                return;
            }
            Console.Write("Kérem az 5. feladat elért pontszámát (max. 30): ");
            double otodik = Convert.ToDouble(Console.ReadLine());
            if (otodik < 0 || otodik > 30)
            {
                Console.WriteLine("Rossz a feladat pontszáma!");
                Console.Beep();
                Thread.Sleep(1000);
                return;
            }
           
            //2. Összesítsd a pontokat, írd is ki.

            double osszesen = elso + masodik + harmadik + negyedik + otodik;
            Console.WriteLine("Összpontszám: {0}", osszesen);
            //3. Ezután írd ki, hányast kapott a user.

            if (osszesen < 0 || osszesen > 100)
            {
                Console.WriteLine("Rossz az összpontszám!");
                Console.Beep();
                Thread.Sleep(1000);
                return;
            }
            // A következő 5 szelekció hátránya, hogy ha bármelyik igaz,
            //attól még kiértékeli a többit is, ezek így fölösleges utasítás-végrehajtások.
            //Ezt a kétágú szelekcióval fogjuk tudni elkerülni.
           
            //Kiértékelés: megvizsgálja, igaz-e vagy hamis a feltétel

            if (osszesen <= 60)
            {
                Console.WriteLine("Egyest kaptál.");
            }
            if (osszesen >= 60.5 && osszesen <= 70)
            {
                Console.WriteLine("Kettest kaptál.");
            }
            if (osszesen >= 70.5 && osszesen <= 80)
            {
                Console.WriteLine("Hármast kaptál.");
            }
            if (osszesen >= 80.5 && osszesen <= 90)
            {
                Console.WriteLine("Négyest kaptál.");
            }
            if (osszesen >= 90.5 && osszesen <= 100)
            {
                Console.WriteLine("Ötöst kaptál.");
            }
            //4. Építsd bele a programba az összpontszám-ellenőrzést:
            //ha a kiszámolt összpontszám nem a nulla és 100
            //közé esik, akkor hangjelzés kíséretében írj ki hibaüzenetet,
            //és szakítsd meg a programot.
            //EZT FÖNT OLDOTTUK MEG A PONTSZÁMBEKÉRÉSEKNÉL

            //Kérdés1: Hogyan kezelnéd a hibás érték bevitelét?
            //Válasz: megoldottuk, amennyire tudtuk.
            //Ha majd megtanuljuk a ciklusokat, akkor majd
            //addig kérjük be újra és újra a pontszámot, amíg jó nem lesz.

            //Kérdés2: Mi a hátránya annak, hogy egymás után
            //minden feltételt kiértékel a program?
            //A válasz a szelekcióknál van.

            //Szorgalmi1: Építsd bele a programba a feladatonkénti
            //pontszámellenőrzést a következők alapján:
            //első feladat: 20 pont
            //második feladat: 15 pont
            //harmadik feladat: 25 pont
            //negyedik feladat: 10 pont
            //ötödik feladat: 30 pont

            //Ha a bekért pontszám nem a nulla és a megfelelő
            //pontszám közé esik, akkor hangjelzés kíséretében
            //írj ki hibaüzenetet, és szakítsd meg a programot.
            //Ezt fent megoldottuk.

            //Szorgalmi2: Légy jó szívű! Add meg a jobb jegyet, ha
            //csak fél pont hiányzik.
            //(Vagy inkább kegyetlen akarsz lenni?:)
            //Fent megoldottuk.

            //Szorgalmi3: Add meg a pontok bekérésénél
            //az összetett feltételeket kétféleképpen:
            //úgy, hogy ne legyen benne tagadás, és
            //úgy, hogy legyen benne egy tagadás.
            //Az első feladat pontszámának bekérésénél megoldottuk.

            Console.ReadLine();
        }
    }
}


4 megjegyzés:

  1. Én szeretek programozni🤷‍♂️

    VálaszTörlés
    Válaszok
    1. varod mar az ajcsikat? 🎅🏻🎅🏻🎅🏻⁉ 😍

      Törlés
    2. igenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigenigen

      Törlés