Esempio n. 1
0
        /// <summary>
        /// Visszaadja, hogy az utasitassorozat végén hova jut a robot.
        /// </summary>
        /// <returns>A végső koordináta.</returns>
        public Koordinata HovaJut()
        {
            // Létrehozunk egy új Koordinata az origóban.
            Koordinata hely = new Koordinata(0, 0);

            // Végigmegyünk az összes utasításon.
            for (int i = 0; i < utasitasok.Count; i++)
            {
                // Minden utasításnál a megfelelő irányba mozgatjuk a Koordinátát.
                hely.Mozgat(utasitasok[i]);
            }
            // Visszaadjuk a végő helyet.
            return(hely);
        }
Esempio n. 2
0
        /// <summary>
        /// Visszadja, hogy a robot hol volt a legtávolabb az origótól, és a
        /// referenciaként átadott paraméterben, hogy hanyadik lépés után.
        /// </summary>
        /// <param name="lepesekSzama">Hány lépés után volt a legtávolabb.</param>
        /// <returns>A legtávolabbi pont koordinátája.</returns>
        public Koordinata HolVanALegtavolabb(ref int lepesekSzama)
        {
            // Feltétlezzünk, hogy a legtávolabbi pont az origó.
            Koordinata legmesszebb = new Koordinata(0, 0);;
            // Eltároljuk az akutális helyet
            Koordinata akutalisHely = new Koordinata(0, 0);

            // Végigmegyünk az összes lépésen.
            for (int i = 0; i < utasitasok.Count; i++)
            {
                // Minden utasításnál a megfelelő irányba mozgatjuk a Koordinátát.
                akutalisHely.Mozgat(utasitasok[i]);

                // Megnézzük, hogy messzebb van-e, mint az idáigi legtávolabbi pont.
                if (akutalisHely.MennyireMesszeAzOrigotol() > legmesszebb.MennyireMesszeAzOrigotol())
                {
                    // Ha igen, akkor eltároljuk, hogy ez az idáigi legmeszebbi hely.
                    legmesszebb  = new Koordinata(akutalisHely);
                    lepesekSzama = i + 1;
                }
            }

            return(legmesszebb);
        }
Esempio n. 3
0
 /// <summary>
 /// Konstruktor, paraméterül vár egy koordinátát.
 /// </summary>
 /// <param name="koordinata">Koordináta.</param>
 public Koordinata(Koordinata koordinata)
 {
     x = koordinata.x;
     y = koordinata.y;
 }
Esempio n. 4
0
        static void Main(string[] args)
        {
            #region 1. feladat
            // Létrehozunk egy listát, amely az utasítássorozatokat tárolja.
            List <Utasitassorozat> utasitassorozatok = new List <Utasitassorozat>();

            // Beolvassuk egy string tömbe a bemeneti fájl összes sorát.
            string[] sorok = File.ReadAllLines(@"..\..\..\program.txt");

            // Végigmegyünk az összes sorok (kivéve az elsőn), és minden sorból
            // létrehozunk egy Utasítássorozat osztálypéldánt, melyet hozzáadunk a listához.
            for (int i = 1; i < sorok.Length; i++)
            {
                utasitassorozatok.Add(new Utasitassorozat(sorok[i]));
            }

            // Ellenőrizzük, hogy volt-e utasítás a fájlban. Ha nem, kilépünk a programból.
            if (utasitassorozatok.Count == 0)
            {
                Console.WriteLine("A bementi fájl nem tartalmaz utasításokat!");
                Console.ReadKey();
                return;
            }
            #endregion

            #region 2. feladat
            // Bekérünk a felhasználótól egy utasítássorozat sorszámot.
            Console.WriteLine("Írj be egy utasítássorozat sorszámot!");
            string bekert = Console.ReadLine();

            // Megpróbáljuk int-é alakítani.
            int sorszam = -1;
            try
            {
                sorszam = int.Parse(bekert);
            }
            // Ha nem számot írt be.
            catch (FormatException)
            {
                Console.WriteLine("Csak számot írhatsz be!");
            }
            // Ha túl nagy számot írt be.
            catch (OverflowException)
            {
                Console.WriteLine("Túl nagy a szám!");
            }
            // Végezetül, mindenképp.
            finally
            {
                // Ellenőrizzük, hogy létezik-e ez a sorszám.
                if (sorszam < 0 || sorszam >= utasitassorozatok.Count)
                {
                    sorszam = 0;
                    Console.WriteLine("A kiválasztott sorszám nem létezik. Automatikusan kiválasztok egy létezőt!");
                }

                Console.WriteLine("A kiválasztott sorsám: {0}", sorszam);
            }
            #endregion

            #region 2.a feladat
            Console.WriteLine("--- 2.a feladat ---");

            // Az Utasitassorozat Egyszerusithető tulajdonságát felhasználva kiijuk, hogy
            // a kiválasztott utasítássorozat egyszerűsíthető-e.
            Console.WriteLine("A {0}. számú utasítássorozat {1}egyszerűsíthető.", sorszam, utasitassorozatok[sorszam].Egyszerusitheto ? "" : "nem ");
            #endregion

            #region 2.b feladat
            Console.WriteLine("--- 2.b feladat ---");

            // Az Utasitassorozat HovaJut metódusát felhasználva kiírjuk, hogy merre kell menni
            // vissza az origó felé.
            int ED = (-1) * utasitassorozatok[sorszam].HovaJut().y;
            int KN = (-1) * utasitassorozatok[sorszam].HovaJut().x;

            Console.WriteLine("{0} lépést kell tenni az ED, {1} lépést a KN tengely mentén.", ED, KN);
            #endregion

            #region 2.c feladat
            Console.WriteLine("--- 2.c feladat ---");

            // Az Utasitassorozat HolVanALegtavolabb metódusát felhasználva kiírjuk, hogy
            // hány lépés után került a legmesszebb a robot, és hogy ehhez hány lépést kellett
            // megtennie.
            int        lepesszam = 0;
            Koordinata hely      = utasitassorozatok[sorszam].HolVanALegtavolabb(ref lepesszam);
            double     tavolsag  = hely.MennyireMesszeAzOrigotol();
            tavolsag = Math.Round(tavolsag, 3);

            Console.WriteLine("A robot {0} lépés után volt a legmesszebb, {1} távolságra.", lepesszam, tavolsag);
            #endregion

            #region 3. feladat
            Console.WriteLine("--- 3. feladat ---");

            // Végigmegyünk az utasításokon és kiírjuk az energiaszükségletüket az
            // Energia tulajdonságot felhasználva.
            for (int i = 0; i < utasitassorozatok.Count; i++)
            {
                Console.WriteLine("{0} {1}", i, utasitassorozatok[i].Energia);
            }
            #endregion

            #region 4. feladat
            Console.WriteLine("--- 4. feladat ---");

            // Kiírjuk az utasítássorozatokat tömörítve egy fájlba, az Utasítassorozat
            // Tomorit medódusát felhasználva.

            // StreamWriter példányosítása
            StreamWriter streamWriter = new StreamWriter(@"..\..\..\ujprog.txt");

            // Végigmenyünk az összes utasítássorozaton.
            foreach (Utasitassorozat utasitassorozat in utasitassorozatok)
            {
                streamWriter.WriteLine(utasitassorozat.Tomorit());
            }

            streamWriter.Close();
            #endregion

            #region 5. feladat
            Console.WriteLine("--- 5. feladat ---");

            // Bekérünk egy tömörített utasítássorozatot.
            Console.WriteLine("Írj be egy tömörített utasítássorozatot!");
            string tomoritett = Console.ReadLine();

            //Kiírjuk kitömorítve az Utasitassorozat osztály statikus Kitomorit metódusa segítségével
            Console.WriteLine(Utasitassorozat.Kitomorit(tomoritett));
            #endregion

            Console.ReadKey();
        }