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