Untitled
unknown
plain_text
2 years ago
5.0 kB
9
Indexable
using System;
using System.Collections;
namespace zadanie04_szuplewska
{
/* Napisz implementację listy typu array list (lista tablic) w wybranym przez siebie obiektowym języku programowania.
Implementacja ma być rekurencyjna z maksymalną hermetyzacją. */
public class ArrayListRek
{
private ArrayList arrayList;
public ArrayListRek()
{
arrayList = new ArrayList();
}
public void Dodawanie(object item)
{
DodawanieRek(arrayList, item);
}
public object Get(int indeks)
{
return GetRek(arrayList, indeks);
}
public void Set(int indeks, object wartosc)
{
SetRek(arrayList, indeks, wartosc);
}
public void Usuwanie(int indeks)
{
UsuwanieRek(arrayList, indeks);
}
public int LicznikRek()
{
return LicznikRek(arrayList);
}
public void Miejsca()
{
Miejsca_Rek(arrayList);
}
private int LicznikRek(ArrayList list)
{
int licznik = 0;
foreach (var item in list)
{
if (item is ArrayList)
{
licznik += LicznikRek((ArrayList)item);
}
else
{
licznik++;
}
}
return licznik;
}
private void DodawanieRek(ArrayList list, object item)
{
if (LicznikRek(list) > 0 && list[list.Count - 1] is ArrayList)
{
DodawanieRek((ArrayList)list[list.Count - 1], item);
}
else
{
list.Add(item);
}
}
private object GetRek(ArrayList list, int indeks2)
{
foreach (var item in list)
{
if (item is ArrayList)
{
var wynik = GetRek((ArrayList)item, indeks2);
if (wynik != null)
{
return wynik;
}
}
else
{
if (indeks2 == 0)
{
return item;
}
indeks2--;
}
}
return null;
}
private void SetRek(ArrayList list, int indeks2, object wartosc)
{
for (int i = 0; i < list.Count; i++)
{
var item = list[i];
if (item is ArrayList)
{
SetRek((ArrayList)item, indeks2, wartosc);
}
else
{
if (indeks2 == 0)
{
list[i] = wartosc;
return;
}
indeks2--;
}
}
}
private void UsuwanieRek(ArrayList list, int indeks2)
{
for (int i = 0; i < list.Count; i++)
{
var item = list[i];
if (item is ArrayList)
{
UsuwanieRek((ArrayList)item, indeks2);
}
else
{
if (indeks2 == 0)
{
list.RemoveAt(i);
return;
}
indeks2--;
}
}
}
private void Miejsca_Rek(ArrayList list)
{
for (int i = 0; i < list.Count; i++)
{
var item = list[i];
if (item is ArrayList)
{
Miejsca_Rek((ArrayList)item);
}
else
{
Console.WriteLine($"Indeks {i}: {item}");
}
}
}
}
class Program
{
static void Main()
{
ArrayListRek arrayListRek = new ArrayListRek();
//dodawanie elementów
arrayListRek.Dodawanie(87);
arrayListRek.Dodawanie("Hello");
arrayListRek.Dodawanie(2.96);
//wyświetlanie zawartości
Console.WriteLine($"Licznik: {arrayListRek.LicznikRek()}");
arrayListRek.Miejsca();
//zmiana wartości
arrayListRek.Set(1, "World");
//usuwanie elementu
arrayListRek.Usuwanie(0);
//wyświetlanie zmienionej zawartości
Console.WriteLine("\nPo zmianach:");
Console.WriteLine($"Licznik: {arrayListRek.LicznikRek()}");
arrayListRek.Miejsca();
Console.ReadKey();
}
}
}Editor is loading...
Leave a Comment