Prezentacja multimedialna
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 lub"brak"
, jeżeli brak danych; identyfikator leku;Waga
– liczba naturalna z przedziału lub"brak"
, jeżeli brak danych; waga leku w miligramach;Liczba
– liczba naturalna z przedziału 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"
.
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.:
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.
W wybranym przez siebie języku programowania napisz program, który:
poda kształty – mogą się powtarzać – wszystkich tabletek o
IdLeku
równymIdLeku
pierwszej lub drugiej tabletki w spisie uporządkowanym niemalejąco wedługIdLeku
, a wyniki zapisze w plikuwyniki.txt
, rozdzielając je pojedynczym znakiem odstępu;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
;poda liczbę takich tabletek, których
IdLeku
jest równy 174 i zapisze odpowiedź w trzeciej linii plikuwyniki.txt
.
Do oceny oddajesz:
plik
wyniki.txt
zawierający odpowiedzi do poleceń,plik(i) z komputerową realizacją zadania (kodem programu).
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.
Odpowiedź do zadania
Odpowiedź do zadania dla danych z pliku leki.txt
:
Dodaj do swojego programu komentarze tak, żeby był zrozumiały dla osoby, która nie potrafi programować.