W pliku tekstowym Duzy_Lotek w kolejnych liniach
Transkrypt
W pliku tekstowym Duzy_Lotek w kolejnych liniach
Szablony Zad 1. W plikach tekstowych Duzy_Lotek i Maly_Lotek w kolejnych liniach zapisane są wyniki losowań odpowiednio dużego i małego lotka. Każda linia pliku Duzy_Lotek ma postać numer_losowania. dzień.miesiąc.rok liczba1,liczba2,liczba3,liczba4,liczba5,liczba6 na przykład 999. 03.11.1974 6,15,20,27,37,40 Plik Maly_Lotek ma podobną strukturę z tym, że liczb jest pięć i są losowane z liczb od 1 do 42. Struktury pliku nie można zmieniać. a) Zdefiniuj strukturę LosowanieD do przechowywania jednego losowania dużego lotka. Dla numeru losowania i roku wykorzystaj typ całkowity dwubajtowy a dla pozostałych danych typ całkowity jednobajtowy. Dla tej struktury zaimplementuj przeciążenie operatora << wstawiania do strumienie wyjściowego. W formacie daty dzień i miesiąc zawsze dwucyfrowe. b) Zdefiniuj strukturę LosowanieM do przechowywania jednego losowania małego lotka. Dla numeru losowania i roku wykorzystaj typ całkowity dwubajtowy a dla pozostałych danych typ całkowity jednobajtowy. Dla tej struktury zaimplementuj przeciążenie operatora << wstawiania do strumienie wyjściowego. W formacie daty dzień i miesiąc zawsze dwucyfrowe. c) Zdefiniuj klasę szablonową LotekS, parametryzowaną strukturą losowania dużego lub małego lotka. Klasa powinna zawierać pola prywatne zilu – pole całkowite dwubajtowe okreslające z ilu liczb jest losowanie ile – pole całkowite dwubajtowe okreslające ile liczb jest losowanych w jednym lososwaniu ok – pole o wartości logicznej; jeśli ma wartość true to można wykonywać operacje na obiekcie tej klasy; bin – zmienna strumieniowa reprezentująca plik binarny wszystkich wyników losowań; Krotnosc – tablica 51-elementowa liczb całkowitych dwubajtowych. Jeśli pierwszy element tej tablicy ( o indeksie 0) ma wartość zero to tablica jeszcze nie jest wypełniona. Pozostałe elementy tablicy służą do przechowywania częstotliwości występowania liczb w losowaniach ( tzn. wartość elementu o indeksie i mówi ile razy liczba i była wylosowana) 1 Szablony Wszystkie metody, z wyjątkiem konstruktora będą pracowały na pliku binarnym skojarzonym ze zmienną strumieniową bin. W metodach należy dbać o to by ten plik był gotowy do użytkowania w sensie odczytu danych w nim zapisanych. Większość metod wykonuje swoje działanie tylko wtedy gdy na obiekcie można wykonywać operacje. Metody klasy: prywatne (pomocnicze) zapis_binarny – zapisująca dane z pliku tekstowego (o danych zapisanych jak opisano wyżej) do pliku binarnego w postaci struktur typu z szablonu klasy; wynikiem funkcji jest liczba rekordów zapisanych do pliku TablicaKrotnosc metoda wypełniająca tablicę Krotność publiczne: -konstruktor dwoma parametrami typu short i z trzecim parametrem tekstowym o wartości domyślnej pusty łańcuch. Parametry całkowite określają: ile liczb losujemy a drugi z ilu liczb losujemy. Trzecim parametrem jest łańcuch określający plik tekstowy z wynikami losowań. Jeśli łańcuch nie jest pusty konstruktor zapisuje dane tekstowe w pliku binarnym o rozszerzeniu dat i co najwyżej ośmiu znakach zadanej w parametrze nazwy pliku tekstowego (np. 2015_lot.dat) a później otwiera go do czytania. Jeśli łańcuch jest pusty konstruktor otwiera odpowiedni (w zależności od ilości liczb spośród których odbywa się losowanie) plik binarny (np. Duzy_lot.dat) do odczytu (plik binarny wcześniej utworzony). W zależności od powodzenia operacji na plikach ustawia odpowiednio wartość pola ok. Zeruje tablicę Krotnosc; - Niepusty metoda dająca w wyniku wartość pola ok; - Czestotliwosci metoda wyświetlająca częstotliwość występowania w losowaniach poszczególnych liczb; - NajrzadziejLosowane - metoda wyświetlająca najrzadziej wylosowane liczby ; - NajczesciejLosowane- metoda wyświetlająca najczęściej losowane liczby ; - LosowanieNr – metoda wyświetlająca zadane parametrem (numer losowania) losowanie - IleTakich – metoda z parametrem będącym tablicą liczb całkowitych dwubajtowych reprezentujących liczby jednego losowania; wynikiem funkcji jest liczba mówiąca ile było losowań z wynikami jak parametr metody, ponadto metoda wyświetla te losowania; - WybierzDoPliku – metoda o dwóch parametrach całkowitych dwubajtowych rok i miesiąc; parametr miesiąc ma zerową wartość domyślną, metoda tworzy plik tekstowy o nazwie LDrrrrmm.txt (jeśli jest to duży lotek) lub LMrrrrmm.txt (jeśli jest to mały lotek) i 2 Szablony zapisuje do niego wyniki losowań z zadanego roku i miesiąca; jeśli miesiąc jest zerowy to z całego roku. - inne metody według autora programu Wykonaj odpowiednie testowania. W testowaniach należy utworzyć pliki tekstowe dla każdego miesiąca z roku 2014 dla obu lotków (razem 24 pliki tekstowe) Zad 2. Napisz funkcję minimumTablicy, wyznaczającą wartość minimalną z n pierwszych elementów tablicy zawierającej dane, dla których określony jest operator relacji < służący do porównywania danych. Wynikiem funkcji jest wartość minimalnego elementu. Testowanie funkcji należy wykonać na tablicach zawierających - liczby całkowite - liczby rzeczywiste - struktury(klasy) zawierające daty (operator< określa daty wcześniejsze) - obiekty typu Auto. Klasa Auto zawiera nazwę auta, rok produkcji, cenę (inne pola wg. uznania) i przeciążony operator < zastosowany do ceny auta. Zad 3. Zdefiniuj i przetestuj klasę szablonową TablicaS pozwalającą na przechowywanie danych dowolnego typu. Dla obiektów tej klasy powinien być przeciążony operator indeksowania oraz powinna być możliwość zmiany rozmiaru tablicy. Tablica tworzona powinna być dynamicznie. W przypadku gdy dynamiczna tablica jest za mała to należy zwiększyć jej pojemność o 100 następnych danych ( oczywiście jeśli się da). W przypadku niepowodzenia (np. za mało pamięci) lub niepoprawnych operacji (przekroczenie zakresu indeksów) należy rzucać wyjątki. Inne operacje na tablicy zaproponować według uznania i potrzeb. 3