ZTP 2019: 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 (tak jak na slajdzie 199, wykład 4), i które dla liczb w tym przedziale znajdują lub obliczają i zwracają:

  1. wartość minimalną/maksymalną,
  2. medianę,
  3. 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);
}

ZTP 2019: 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ła je na ekranie, a zadaniem gracza jest podać szybko kod ascii odpowiadający danej literze. 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.

ZTP 2019: 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 +, -, |.

PO 2019: wyniki egzaminu z dn. 17.09 (termin drugi)

Wiersze zawierają: cztery ostatnie cyfry z nr indeksu, liczbę zdobytych punktów z części teoretycznej (maks. 24pkt), części praktycznej (maks. 16 pkt.) oraz sumę punktów i proponowaną ocenę.

  1. 0388   13 pkt.   0 pkt.   13 pkt.   2
  2. 0399   8 pkt.   0 pkt.   8 pkt.   2
  3. 0402   19 pkt.   2 pkt.   21 pkt.   3
  4. 0420   14.5 pkt.   0.5 pkt.   15 pkt.   2
  5. 0480   10 pkt.   2 pkt.   12 pkt.   2
  6. 0651   11 pkt.   0 pkt.   11 pkt.   2
  7. 0652   9.5 pkt.   4 pkt.   13.5 pkt.   2
  8. 0653   12 pkt.   1 pkt.   13 pkt.   2
  9. 0685   3.5 pkt.   0.5 pkt.   4 pkt.   2
  10. 0688   2.5 pkt.   0 pkt.   2.5 pkt.   2
  11. 1178   8.5 pkt.   2 pkt.   10.5 pkt.   2
  12. 1262   13.5 pkt.   3 pkt.   16.5 pkt.   2
  13. 2719   3 pkt.   15.5 pkt.   18.5 pkt.   2
  14. 3874   15.5 pkt.   5 pkt.   20.5 pkt.   3
  15. 6137   16.5 pkt.   5 pkt.   21.5 pkt.   3
  16. 6599   11.5 pkt.   4.5 pkt.   16 pkt.   2
  17. 7362   18.5 pkt.   1.5 pkt.   20 + ε pkt.   3
  18. 7363   9 pkt.   2 pkt.   11 pkt.   2
  19. 7389   17 pkt.   5 pkt.   22 pkt.   3
  20. 7416   8 pkt.   5 pkt.   13 pkt.   2

Wgląd do pracy egzaminacyjnej będzie możliwy we wtorek, 24.09, w pok. 1228, bud.12, w godz. 11-12.

PO 2019: nadsyłanie rozwiązań zadań semestralnych

Zgodnie z regulaminem zaliczeń przedmiotów, studenci, którzy nie zdobyli wystarczającej liczby punktów z laboratorium, mają prawo do poprawy. Ci, którzy zamierzają uczestniczyć w poprawie, muszą jednak najpierw otrzymać ocenę pozytywną z zadania semestralnego. Rozwiązania zadań semestralnych (zzipowany komplet plików, spełniających wszystkie formalne wymagania) studenci przekazują do oceny swoim prowadzącym zajęcia. Jeżeli ktoś w czerwcu rozliczył swoje zadanie semestralne, to jest już dopuszczony do poprawy. Warto teraz przypomnieć o pozytywnym zaliczeniu swoim prowadzącym, ponieważ będę ich prosił o sporządzenie list osób, które otrzymały oceny pozytywne. Tylko osoby, które będą na tych listach, zostaną dopuszczone do poprawy.

Studenci przekazują prace do oceny zgodnie z terminami ustalonymi przez swoich prowadzących. Studenci z mojej grupy, którzy chcą przystąpić do poprawy, a nie mają jeszcze zaliczonego zadania semestralnego, przesyłają mi je do oceny w postaci załącznika do maila do 11 września (środa) włącznie. Prace przesłane później mogą nie zostać ocenione. Wszystkie oceny muszą zostać wystawione do końca weekendu 14-15.09.
Uwaga: proszę uważnie przeczytać i zastosować wskazówki #1 i #2 na stronie www zawierającej formalne wymagania.

Poprawa lab. jest wspólna dla studentów wszystkich grup i odbędzie się zgodnie z terminarzem podanym we wpisie „terminarz sesji wrześniowej”.