fel
le

Listák

Készítsünk olyan programot, amely egy külön osztályba egy egész szám listát tartalmaz. Két függvényt írjunk bele. Az első 100.000 darab random számot ad a listához, a második 100.000 esetben random kiválaszt egy listaelemet, és törli a listáról (amennyiben a lista nem üres). Ha a két függvényt egymás után lefuttatjuk, a lista természetesen újra üres lesz. A főprogram futtassa le a két függvényt egymás után, és írja ki a (megmaradt) elemeket a listáról.

Listák több szálon

A két függvényt futtassuk le két szálon. Figyeljük meg hogy mi történik, keressünk rá magyarázatot. Oldjuk meg.

A listakezelő program forráskódja

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



namespace tombos
{
    class listaz
    {
        static Random rnd = new Random();
        public List<int> L = new List<int>();
        //........................................................
        public void hozzaad()
        {
            for (int i = 0; i < 100000; i++)
            {
                int x = rnd.Next(1, 900000);
                L.Add(x);
            }
        }
        //........................................................
        public void torol()
        {
            for (int i = 0; i < 100000; i++)
            {
                int db = L.Count;
                if (db == 0) continue;
                int j = rnd.Next(0, db);
                L.RemoveAt(j);
            }
        }
        //........................................................
    }
    class FoProgram
    {
        public static void Main()
        {
            listaz p = new listaz();
            p.hozzaad();
            p.torol();
            Console.WriteLine("---- megmaradtak ----");
            foreach (int x in p.L)
              Console.Write("{0}, ", x);
            Console.WriteLine("---- kesz ----");
            Console.ReadLine();
        }
    }
}
 
Hernyák Zoltán
2013-04-15 14:00:06