using System; using System.Collections.Generic; namespace Lotto { class Program { static void Main(string[] args) { List<int> lista = new List<int>(); for (int i = 1; i <= 49; i++) lista.Add(i); Console.WriteLine("Zawartośc kolekcji"); foreach (int i in lista) Console.Write("{0} ", i); Console.WriteLine("\n\nSize={0} Capacity={1}", lista.Count, lista.Capacity); Console.Write("Losowanie Lotto: "); Shuffle<int>(lista); for (int i = 0; i < 6; i++) Console.Write("{0} ", lista[i]); Console.WriteLine(); lista.Sort(); } public static void Shuffle<T>(List<T> sequence) { Random random = new Random(); for (int i = 0; i < sequence.Count; i += 1) { int swapIndex = random.Next(sequence.Count); if (swapIndex != i) { T tmp = sequence[i]; sequence[i] = sequence[swapIndex]; sequence[swapIndex] = tmp; } } } } }
using System; using System.Collections.Generic; namespace Dictionary { class Program { static void Main(string[] args) { string line; SortedDictionary<string, int> slownik = new SortedDictionary<string, int>(); while ((line = Console.ReadLine()) != null) { if (!slownik.ContainsKey(line)) slownik.Add(line,1); else slownik[line]++; } foreach (KeyValuePair<string, int> kvp in slownik) Console.WriteLine("{0} {1}", kvp.Key, kvp.Value); } } }
Rozszerz program z poprzednich zajęć o nowe funkcjonalności opisane poniżej (solucja w VS2013 rpg.zip).
Dla klasy reprezentującej drużynę bohaterów:
[]
dający dostęp do i
-tego bohatera w drużynie,IClonable
, tak by możliwe było stworzenie kopii całej drużyny,IEnumerable<IPostac>
,IEnumerable<T>
, tak aby możliwe było iterowanie elementów drużyny za pomocą pętli foreach
,Sortuj
, która posortuje bohaterów w kolekcji względem mocy ataku (sortownanie realizowane za pomocą obiektu implementującego interfejs IComparer
),Transformuj
, która przyjmuje jako argument delegata, który jest w stanie wykonać dowolną operację na elementach drużyny (na obiektach implementujących IPostac
). Zaimplementuj delegata, który zmniejszy/zwiększy wartość punktów życia o pewną wartość dla każdego bohatera w drużynie,ArgumentNullException
oraz ArgumentOutOfRangeException
w wypadku podania niewłaściwych argumentów do metod klasy,
Utwórz klasę reprezentującą listę płac w firmie.
Do listy płac można dodać dowolną ilość pracowników, listę można wydrukować na ekranie, zapisać do pliku oraz posortować względem wysokości pensji. Wykorzystaj w tym celu klasy pochodzące z rozwiązania zadania Firma z poprzednich zajęć.
Klasa udostępnia następujące operacje:
ToString()
zwracająca tekst zawierający listę płac. W każdym wierszu tekstu znajduje się wpis dotyczący pojedynczego pracownika: numer porządkowy, imię, nazwisko oraz wysokość pensji.ToString()
. Sortowanie kolekcji wymaga utworzenie delegata realizującego porównanie Comparison lub obiektu implementującego interfejs IComparer.IEnumerable<T>
, pozwalając na iterowanie po kolejnych pracownikach umieszczonych na liście.
Zaimplementuj klasę o nazwie Wykres
realizującą dwuwymiarowy układ współrzędnych. Wykres przechowuje zbiór figur zaimplementowanych na poprzednich zajęciach. Klasa ta stanowi więc pojemnik do którego możemy dodać dowolną liczbę punktów, kół oraz trójkątów. Do przechowywania figur użyj wybranej kolekcji z przestrzeni nazw System.Collections.Generic.
Dla obiektu reprezentującego wykres zaimplementuj:
Clone()
tworzącą kopię obiektu (interfejs IClonable
)LiczbaFigur
do odczytu liczby przechowywanych w kolekcji figurToString()
umieszczającą w łańcuchu znakowym informacje o wszystkich elementach umieszczonych na wykresieSort()
, która posortuje kolekcję figur na wykresie w rosnącym porządku ze względu na wartość obwodu. ToString()
. Sortowanie kolekcji wymaga utworzenie delegata realizującego porównanie Comparison lub obiektu implementującego interfejs IComparer.IEnumerable<T>
.