2020. február 7., péntek

2020.02.07. Domino day tanári megoldás - Típuskényszerítés

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

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á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 lehetőségek, amik itt és most nem pontosak:");
                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();
        }
    }
}

Ebben a megoldásban a dominók három mérete külön van tárolva:

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

namespace DominoDay
{
    class Program
    {
        static void Main(string[] args)
        {
            const double dobozSzelesseg = 50 * 10;
            const double dobozHosszusag = 80 * 10;
            const double dobozMagassag = 40 * 10;

            const double dobozTerfogat = dobozSzelesseg * dobozHosszusag * dobozMagassag;
            /////////////////////////////////////////////////////////////////////////////
            const double elsoSzelesseg = 50;
            const double elsoHosszusag = 30;
            const double elsoMagassag = 6;

            const double elsoTerfogat = elsoSzelesseg * elsoHosszusag * elsoMagassag;
            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ánál ugyanis nem használhatjuk a Convert függvényt

            //ha nem konstans, akkor használhatjuk:
            int elsoDarabKonvertalva = Convert.ToInt32(elsoDarabDouble);
            /////////////////////////////////////////////////////////////////////////////

            const double masodikSzelesseg = 40;
            const double masodikHosszusag = 25;
            const double masodikMagassag = 5;

            const double masodikTerfogat = masodikSzelesseg * masodikHosszusag * masodikMagassag;
            const double masodikDarabDouble = dobozTerfogat * 15 / masodikTerfogat;
            const int masodikDarabInt = (int)masodikDarabDouble; //típuskényszerítés

            /////////////////////////////////////////////////////////////////////////////

            const double harmadikSzelesseg= 70;
            const double harmadikHosszusag = 35;
            const double harmadikMagassag = 8;

            const double harmadikTerfogat = harmadikSzelesseg * harmadikHosszusag * harmadikMagassag;
            const double harmadikDarabDouble = dobozTerfogat * 15 / harmadikTerfogat;
            const int harmadikDarabInt = (int)harmadikDarabDouble; //típuskényszerítés

            /////////////////////////////////////////////////////////////////////////////

            Console.WriteLine("Első domino: {0}*{1}*{2}", elsoSzelesseg, elsoHosszusag, elsoMagassag);
            Console.WriteLine("Második domino: {0}*{1}*{2}", masodikSzelesseg, masodikHosszusag, masodikMagassag);
            Console.WriteLine("Harmadik domino: {0}*{1}*{2}", harmadikSzelesseg, harmadikHosszusag, harmadikMagassag);

            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 lehetőségek, amik itt és most nem pontosak:");
                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();

        }
    }
}



1 megjegyzés: