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