Zadanie 2. Fabryka leków

W miejscowości Matrycowo znajduje się fabryka zajmująca się produkcją leków na różne dolegliwości. Zarząd fabryki postanowił uporządkować produkowane rodzaje tabletek za pomocą struktury przechowującej odpowiednio uporządkowane dane.

Każda tabletka opisana jest za pomocą następujących danych:

  • IdLeku – liczba naturalna z przedziału 100 , 199 lub "brak", jeżeli brak danych; identyfikator leku;

  • Waga – liczba naturalna z przedziału 1000 , 5500 lub "brak", jeżeli brak danych; waga leku w miligramach;

  • Liczba – liczba naturalna z przedziału 3 , 9 lub "brak", jeżeli brak danych; wartość określająca, po ile tabletek pakowanych jest w pojedynczym blistrze (listku);

  • Kształt – ciąg znaków; kształt tabletki; możliwe wartości: "owalny", "okragly", "prostokatny", "fasolkowaty".

Ważne!

Jeden lek może występować w różnych tabletkach, różniących się wagą, liczbą tabletek lub kształtem – wtedy IdLeku dwóch tabletek jest identyczny, np.:

Linia 1. 102 3500 4 okragly. Linia 2. 102 1000 9 prostokatny.

Niestety z powodu awarii część danych została utracona. W każdym wierszu zostało uszkodzone maksymalnie jedno pole. Dane o kształcie zostały zachowane w całości.

Po wstępnej analizie okazało się, że informacje o liczbie tabletek w blistrze uległy uszkodzeniu tylko dla tabletek owalnych lub prostokątnych. Firma przy pakowaniu posługuje się następującą zasadą:

Tabletki o owalnym lub prostokątnym kształcie dla nieparzystego IdLeku są pakowane w blistrze po 7 sztuk, natomiast dla parzystego IdLeku – po 9 sztuk.

Po głębszej analizie specjalistom udało się ustalić, że:

Waga tabletek uległa uszkodzeniu tylko w przypadku tabletek okrągłych. Każda taka tabletka, zgodnie z jej specyfikacją, waży 3500 mg.

Finalnie udało się ustalić, że IdLeku tabletek został zniszczony tylko dla tabletek fasolkowatych. W dostarczonej dokumentacji widnieje zasada:

IdLeku fasolkowatych tabletek to zawsze „17*”, gdzie symbol „*” to liczba tabletek w pojedynczym blistrze.

Plik leki.txt składa się z 300 wierszy. W każdym wierszu znajdują się kolejno oddzielone od siebie znakiem spacji trzy liczby naturalne (lub ciągi znaków "brak" w przypadku braku danych) oraz łańcuch znaków. Informacje o kształcie nie zostały utracone w żadnym z wierszy.

RS7hfVpX2SXiz

Plik leki.txt.
Plik TXT o rozmiarze 6.22 KB w języku polskim
Polecenie 1

W wybranym przez siebie języku programowania napisz program, który:

  1. poda kształty – mogą się powtarzać – wszystkich tabletek o IdLeku równym IdLeku pierwszej lub drugiej tabletki w spisie uporządkowanym niemalejąco według IdLeku, a wyniki zapisze w pliku wyniki.txt, rozdzielając je pojedynczym znakiem odstępu;

  2. poda liczbę takich tabletek, których kształt zaczyna się na „o”, a których liczba w blistrze wynosi 7, i zapisze odpowiedź w drugiej linii pliku wyniki.txt;

  3. poda liczbę takich tabletek, których IdLeku jest równy 174 i zapisze odpowiedź w trzeciej linii pliku wyniki.txt.

Do oceny oddajesz:

  • plik wyniki.txt zawierający odpowiedzi do poleceń,

  • plik(i) z komputerową realizacją zadania (kodem programu).

Praca domowa

Przedstaw rozwiązanie zadania w postaci programu w języku C++, Java lub Python. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego do programu. Odpowiedź do zadania znajdziesz pod prezentacją rozwiązania.

Rozwiązanie

Rozwiązanie zadania przedstawimy za pomocą pseudokodu.

RxdumP8lJjbl01
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Odpowiedź do zadania

Odpowiedź do zadania dla danych z pliku leki.txt:

Linia 1. prostokatny prostokatny. Linia 2. 30. Linia 3. 33.
Polecenie 2

Dodaj do swojego programu komentarze tak, żeby był zrozumiały dla osoby, która nie potrafi programować.