2023. február 6., hétfő

2023.02.06. Foreach - fontos tudnivaló

Vizsgáld meg ezt a programot, és magyarázd el a működését.

Használd a következő szavakat: szintaktikai, szemantikai, futási

int[] tomb = new int[5];
            Random rnd = new Random();
            for (int i = 0; i < tomb.Length; i++)
            {
                tomb[i] = rnd.Next();
                Console.WriteLine(tomb[i]);
            }
            Console.WriteLine("Itt mi történik?");
            foreach (int x in tomb)
            {
                Console.WriteLine(tomb[x]);
            }
            Console.ReadLine();
            //////////////////////////////////////////////////
            for (int i = 0; i < tomb.Length; i++)
            {
                tomb[i] = rnd.Next(0,5);
                Console.WriteLine(tomb[i]);
            }
            Console.WriteLine();
            Console.WriteLine("És itt mi történik?");
            foreach (int x in tomb)
            {
                Console.WriteLine(tomb[x]);
            }
            Console.ReadLine();

Megoldás:

 using System;

namespace gadget
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] tomb = new int[5];
            Random rnd = new Random();
            for (int i = 0; i < tomb.Length; i++)
            {
                tomb[i] = rnd.Next();
                Console.WriteLine(tomb[i]);
            }
            Console.WriteLine("Itt mi történik?");
            foreach (int x in tomb)
            {
                Console.WriteLine(tomb[x]); //véletlenül a tömb elemeit akartuk így kiírni
            }
            //nincs szintaktikai hiba, de futási hiba van,
            //mert a véletlenszám, ami a tömbben van, az kerül az x helyére,
            //és nem lesznek ennyiedik tömbelemek
            Console.ReadLine();
            //////////////////////////////////////////////////
            for (int i = 0; i < tomb.Length; i++)
            {
                tomb[i] = rnd.Next(0,5);
                Console.WriteLine(tomb[i]);
            }
            Console.WriteLine();
            Console.WriteLine("És itt mi történik?");
            foreach (int x in tomb)
            {
                Console.WriteLine(tomb[x]);
            }
            //itt nincs szintaktikai hiba,
            //nincs futási hiba,
            //de szemantikai hiba van (rendellenes működés),
            //mert az x maga a tömbelem, és bár a tömbből nem futunk ki,
            //nem a sorban következő tömbelemeket írjuk ki
            Console.ReadLine();
        }
    }
}

Nincsenek megjegyzések:

Megjegyzés küldése