Untitled
unknown
plain_text
2 years ago
5.0 kB
6
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