Kategoria: Zaawansowane Programowanie Obiektowe 2018
ZPO 2018: Zadanie przed lab.3
Zadanie, które dotyczy zakresu materiału, jaki będzie poruszany na lab. 3. Rozwiązanie nie jest wymagane. Zadanie stanowi wyłącznie pomoc w przygotowaniu się do zajęć.
Zadanie:
Korzystając z szablonu kontenera Konten utwórz w funkcji main
obiekt reprezentujący kontener do przechowywania zmiennych typu double
i umieść w nim za pomocą metody push
dowolną liczbę (nie większą od 100) wartości losowych rzeczywistych z przedziału 〈0, 10).
Napisz szablony trzech funkcji, które jako argument wejściowy przyjmują parę iteratorów identyfikujących przedział danych z kontenera, i które dla liczb w tym przedziale znajdują lub obliczają i zwracają:
- wartość minimalną/maksymalną,
- medianę,
- wartość średnią.
Przyjmij, że typ danych przechowywanych w kontenerze zawsze pozwala na wszystkie standardowe operacje arytmetyczne i logiczne (posiada odpowiednie operatory). Uwaga: funkcje nie otrzymują w argumentach wywołania referencji ani wskaźnika do obiektu kontenera, a jedynie iteratory wskazujące na poprawny przedział danych w nim zawartych.
Zademonstruj poprawne działanie tych szablonów funkcji wywołując je w funkcji main
dla przykładowych danych zapisanych w kontenerze. Na początku na potrzeby testów poprawności spreparuj dane testowe w kontenerze tak, aby łatwo było w pamięci policzyć wynik i potwierdzić poprawność działania szablonów funkcji.
Hint: aby wygenerować wartość losową z przedziału 〈0, 1) można np. użyć funkcji:
//generates a psuedo-random double between 0.0 and 0.999...
double randdouble()
{
return rand()/(double(RAND_MAX)+1);
}
ZPO 2018: Wykład 4 – slajdy
ZPO 2018: Wykład 3 – slajdy
ZPO 2018: Zadania przed lab.2
Zadania, które dotyczą zakresu materiału, jaki będzie poruszany na lab. 2. Rozwiązanie tych zadań nie jest wymagane. Stanowią wyłącznie pomoc w przygotowaniu się do zajęć.
Zadanie #1:
W kolejnych wierszach pliku znajdują się wyrażenia arytmetyczne zapisane w odwrotnej notacji polskiej (ale bez wykorzystania nawiasów). Napisz program, który będzie odczytywał wiersz i obliczał wartość, a jeżeli w wyrażeniu jest błąd składni, to rzucał wyjątek. Wyjątek zostaje przechwycony na końcu programu i obsłużony w postaci wyświetlenia komunikatu o rodzaju błędu. Dostosuj wartość wyjątku do rodzaju błędu.
Zadanie #2:
Napisz grę, która będzie losowała dowolne litery z alfabetu i wyświetlał je na ekranie, a zadaniem gracza jest podać szybko odpowiadający jej kod ascii. Fragment programu odpowiedzialny za zadawanie pytań i sprawdzanie odpowiedzi użytkownika jest zamknięty w funkcji, która zwraca liczbę całkowitą – sumaryczną liczbę sekund, jakiej użytkownik potrzebował, żeby udzielać odpowiedzi na serię pytań. Może zdarzyć się, że użytkownik poda niewłaściwy kod ascii, ale to nie powoduje przerwania gry. Dopiero w przypadku popełnienia przez użytkownika drugiej pomyłki zamiast kolejnego pytania rzucany jest wyjątek, który jest przechwycony dopiero w funkcji main
. W ramach obsługi wyjątku użytkownik dostaje pytanie, czy chce spróbować jeszcze raz i jeżeli tak – funkcja zadająca pytania jest ponownie wywoływana.
Zadanie #3:
Język „Markdown” jest jednym z najprostszych języków znaczników, mimo to jednak znajduje wiele zastosowań, m.in. w plikach readme. W tym języku można formatować tekst, który później zostanie odpowiednio zwizualizowany w oknie przeglądarki.
W języku „Markdown” wskazywanie czcionek, które mają być użyte w poszczególnych fragmentach dokumentu, odbywa się wg następującej składni: najpierw znak otwierający formatowanie, np. _
, *
, __
, **
lub `
, potem tekst podlegający formatowaniu, a na koniec ten sam znak, ale tym razem oznaczający koniec formatowanego fragmentu tekstu. Przykłady: _italic_
, *italic*
, __bold__
, **bold**
, `monospace`
.
Napisz parser, który będzie sprawdzał poprawność formatowania czcionek w tekście zawartym w pliku. Przyjmij, że poprawne formatowanie wymaga, aby liczba znaków otwierających i zamykających była sobie równa, oraz aby formatowane obszary nie przecinały się ani nie zagnieżdżały. W przypadku wykrycia błędu składni rzucany jest wyjątek, który zostanie przechwycony na końcu programu i obsłużony w postaci wyświetlenia komunikatu o błędzie. Dostosuj wartość wyjątku do rodzaju błędu.
ZPO 2018: Wykład 2 – slajdy
ZPO 2018: Wykład 1 – slajdy
ZPO 2018: Zadania przed lab.1
Zadania, które dotyczą zakresu materiału, jaki będzie poruszany na lab. 1. Rozwiązanie tych zadań nie jest wymagane. Stanowią wyłącznie pomoc w przygotowaniu się do zajęć.
Zadanie #1:
W pliku dane-lab1.txt znajdują się dane z czterech czujników mierzących temperaturę. Każdy wiersz reprezentuje jeden pomiar i zawiera cztery wartości: nr porządkowy (liczba całkowita), zmierzoną temperaturę (liczba rzeczywista), datę i godzinę (napis), oraz nr czujnika (liczba całkowita). Separatorem wartości jest przecinek.
Zaproponuj typ danych przechowujący pomiar. Następnie zadeklaruj stuelementową tablicę, korzystając z szablonu Tablica
prezentowanego na wykładzie z PO, której elementami są dane z czujników (należy dokonać konkretyzacji szablonu klasy Tablica
na rzecz zaproponowanego typu danych reprezentujących dane z czujnika i utworzyć jeden obiekt takiego skonkretyzowanego typu).
Kod szablonu jest dostępny na stronie www:
https://troja.uksw.edu.pl/programowanie-obiektowe/kody-programow/
– plik wykład13b.h
Napisz program, który – z wykorzystaniem strumieni – wczyta dane z pliku do tablicy, a następnie wypisze jej zawartość w oknie konsoli, rezerwując dla każdej z czterech wartości stałą liczbę znaków (sam zaproponuj, ile znaków zarezerwować dla każdej z kolumn, aby żadne wartości nie zostały przycięte, oraz aby kolumny w sumie nie przekroczyły standardowej szerokości okna konsoli).
Zadanie #2:
W pliku dane-lab1.txt znajdują się dane z czterech czujników mierzących temperaturę. Każdy wiersz reprezentuje jeden pomiar i zawiera cztery wartości: nr porządkowy (liczba całkowita), zmierzoną temperaturę (liczba rzeczywista), datę i godzinę (napis), oraz nr czujnika (liczba całkowita). Separatorem wartości jest przecinek. Z wykorzystaniem strumieni wczytaj dane z tego pliku i zapisz do drugiego w formacie tabelki, tj. rezerwując dla każdej z czterech wartości stałą liczbę znaków oraz z ramkami i wierszem nagłówkowym. Do rysowania ramek użyj znaków +
, -
, |
.