Zdjęcie przedstawia podświetloną konstrukcję mostu nocą. Widoczne są żelazne pręty podtrzymujące konstrukcję.
Zdjęcie przedstawia podświetloną konstrukcję mostu nocą. Widoczne są żelazne pręty podtrzymujące konstrukcję.
I_R_W13A_M09_JAVA Misja matura - struktury danych
Źródło: Alain Pham, domena publiczna.
Już wiesz
Jak wczytać dane z pliku tekstowego i zapisuje je w odpowiednio dobranej strukturze danych, analizuje treść zadania oraz wskazuje, które dane są kompletne, a które należy uzupełnić na podstawie podanych reguł.
Jak się stosuje instrukcje warunkowe i pętle do przetwarzania wielu rekordów danych.
Jak się sortuje, wyszukuje i zlicza dane zgodnie z warunkami określonymi w zadaniu.
Jak się zapisuje wyniki działania programu do pliku oraz komentuje kod w sposób ułatwiający jego zrozumienie.
Teraz czas, aby sprawdzić wiedzę i umiejętności w praktyce.
Zadanie 3. Sklep papierniczy
Sklep Nowa Linia ma szeroki asortyment produktów papierniczych.
Każdy artykuł w sklepie opisany jest następującymi danymi:
id produktu – liczba całkowita dodatnia, unikatowy numer każdego produktu,
rodzaj – „zeszyt”, „kalendarz”, „notatnik”,
rozmiar – „A3”, „A4”, „A5”,
liczba kartek – liczba całkowita z zakresu ,
okladka – „twarda”, „miekka”.
Przedstawione informacje dla 500 artykułów zostały zapisane w pliku papierniczy.txt, każdy artykuł w osobnej linii. Informacje dotyczące artykułów zostały oddzielone od siebie pojedynczymi znakami odstępu.
Niektóre dane produktów zostały błędnie wpisane. Zapisz, ile artykułów z błędnymi danymi znajduje się w pliku. Błędne dane rozpoznajemy po tym, że nie spełniają podanych niżej zasad:
Zeszyt w miękkiej okładce nie ma więcej kartek niż 110.
Liczba kartek w notatniku jest liczbą z zakresu .
Kalendarze w rozmiarze A3 występują tylko w miękkiej okładce.
Kalendarze mają zawsze 6 lub 12 kartek.
Uwaga!
Produkt łamiący więcej niż jedno kryterium liczymy tylko raz. Produkty z błędnymi danymi nie powinny być uwzględniane podczas wykonywania kolejnych zadań!
Produkty należą do jednej kategorii, jeżeli mają jednakowe następujące dane:
rodzaj,
rozmiar,
liczba kartek,
okładka.
Dla każdego rodzaju (zeszyt, notatnik oraz kalendarz) zapisz największą liczbę produktów danej kategorii. Kolejne liczby rozdziel znakami odstępu.
Zapisz nazwę rodzaju produktu, który zawiera łącznie najwięcej różnych kategorii produktów oraz łączną liczbę kartek produktów różnych kategorii tego rodzaju.
Sprawdź, czy istnieje produkt o liczbie kartek, która jest liczbą pierwszą. Jeżeli tak, zapisz „tak”, w przeciwnym wypadku zapisz „nie”.
Kolejne odpowiedzi zapisz do pliku wyniki.txt, każdy podpunkt w nowej linii (wyniki w ramach podpunktów oddziel pojedynczymi znakami odstępu).
Do oceny oddajesz:
plik wyniki.txt zawierający odpowiedzi do poleceń,
plik(i) z komputerową realizacją zadania (kodem programu).
21
Ćwiczenie 1
JĘZYK JAVA
Rm2Za2XeAA5nw
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Wymyśl pytanie na kartkówkę związane z tematem materiału.
W podanym niżej rozwiązaniu do porównywania ciągów znaków (typ String) używamy operatora ==, który zwraca prawdę tylko wtedy, kiedy porównywane ciągi są tymi samymi obiektami, a tak się dzieje dla literałów znakowych umieszczonych w kodzie programu.
Po wczytaniu danych z pliku każdy ciąg znakowy jest innym obiektem, próba porównania go z literałem za pomocą operatora == zawsze zwróci fałsz. Właściwym sposobem na porównanie jest w takim wypadku użycie metody equals() klasy String, a więc np.:
zamiast okladka[i] == "miekka" powinno być okladka[i].equals("miekka"),
zamiast okladka[i] != "miekka" powinno być !okladka[i].equals("miekka").
Linia 1. import java kropka util kropka asterysk średnik.
Linia 3. class Produkt otwórz nawias klamrowy.
Linia 4. public int id średnik.
Linia 5. public String rodzaj średnik.
Linia 6. public String rozmiar średnik.
Linia 7. public int liczba średnik.
Linia 8. public String okladka średnik.
Linia 9. zamknij nawias klamrowy.
Linia 11. class Kategoria otwórz nawias klamrowy.
Linia 12. public String rozmiar średnik.
Linia 13. public int liczba średnik.
Linia 14. public String okladka średnik.
Linia 15. public int l podkreślnik produktow średnik.
Linia 16. zamknij nawias klamrowy.
Linia 18. public class Main otwórz nawias klamrowy.
Linia 19. prawy ukośnik prawy ukośnik funkcja do podpunktu 4.
Linia 20. static boolean czyPierwsza otwórz nawias okrągły int liczba zamknij nawias okrągły otwórz nawias klamrowy.
Linia 21. if otwórz nawias okrągły liczba otwórz nawias ostrokątny 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. return false średnik.
Linia 23. zamknij nawias klamrowy.
Linia 24. int i znak równości 2 średnik.
Linia 25. while otwórz nawias okrągły i asterysk i otwórz nawias ostrokątny znak równości liczba zamknij nawias okrągły otwórz nawias klamrowy.
Linia 26. if otwórz nawias okrągły liczba procent i znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 27. return false średnik.
Linia 28. zamknij nawias klamrowy.
Linia 29. i plus plus średnik.
Linia 30. zamknij nawias klamrowy.
Linia 31. return true średnik.
Linia 32. zamknij nawias klamrowy.
Linia 34. static Kategoria dodajKategorie otwórz nawias okrągły Produkt produkt zamknij nawias okrągły otwórz nawias klamrowy.
Linia 35. Kategoria k znak równości new Kategoria otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 36. k kropka rozmiar znak równości produkt kropka rozmiar średnik.
Linia 37. k kropka liczba znak równości produkt kropka liczba średnik.
Linia 38. k kropka okladka znak równości produkt kropka okladka średnik.
Linia 39. k kropka l podkreślnik produktow znak równości 1 średnik.
Linia 40. return k średnik.
Linia 41. zamknij nawias klamrowy.
Linia 43. static int dodajProdukt otwórz nawias okrągły Vector otwórz nawias ostrokątny Kategoria zamknij nawias ostrokątny kat przecinek Produkt produkt zamknij nawias okrągły otwórz nawias klamrowy.
Linia 44. if otwórz nawias okrągły wykrzyknik kat kropka isEmpty otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 45. Kategoria k średnik.
Linia 46. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny kat kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 47. k znak równości kat kropka get otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 48. if otwórz nawias okrągły k kropka rozmiar znak równości znak równości produkt kropka rozmiar ampersant ampersant k kropka liczba znak równości znak równości produkt kropka liczba ampersant ampersant k kropka okladka znak równości znak równości produkt kropka okladka zamknij nawias okrągły otwórz nawias klamrowy.
Linia 49. k kropka l podkreślnik produktow plus plus średnik.
Linia 50. return 0 średnik.
Linia 51. zamknij nawias klamrowy.
Linia 52. zamknij nawias klamrowy.
Linia 53. kat kropka addElement otwórz nawias okrągły dodajKategorie otwórz nawias okrągły produkt zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 54. zamknij nawias klamrowy.
Linia 55. else.
Linia 56. kat kropka addElement otwórz nawias okrągły dodajKategorie otwórz nawias okrągły produkt zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 57. return 0 średnik.
Linia 58. zamknij nawias klamrowy.
Linia 60. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 61. int n znak równości 20 średnik.
Linia 62. Vector otwórz nawias ostrokątny Produkt zamknij nawias ostrokątny dane znak równości new Vector otwórz nawias ostrokątny Produkt zamknij nawias ostrokątny średnik otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 64. int otwórz nawias kwadratowy zamknij nawias kwadratowy idProduktu znak równości otwórz nawias klamrowy 1 przecinek 2 przecinek 3 przecinek 4 przecinek 5 przecinek 6 przecinek 7 przecinek 8 przecinek 9 przecinek 10 przecinek 11 przecinek 12 przecinek 13 przecinek 14 przecinek 15 przecinek 16 przecinek 17 przecinek 18 przecinek 19 przecinek 20 zamknij nawias klamrowy średnik.
Linia 65. String otwórz nawias kwadratowy zamknij nawias kwadratowy rodzaj znak równości otwórz nawias klamrowy cudzysłów zeszyt cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów kalendarz cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów notatnik cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów kalendarz cudzysłów przecinek cudzysłów kalendarz cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów notatnik cudzysłów przecinek cudzysłów notatnik cudzysłów przecinek cudzysłów notatnik cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów kalendarz cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów notatnik cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów zeszyt cudzysłów przecinek cudzysłów zeszyt cudzysłów zamknij nawias klamrowy średnik.
Linia 66. String otwórz nawias kwadratowy zamknij nawias kwadratowy rozmiar znak równości otwórz nawias klamrowy cudzysłów A3 cudzysłów przecinek cudzysłów A3 cudzysłów przecinek cudzysłów A3 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A4 cudzysłów przecinek cudzysłów A3 cudzysłów przecinek cudzysłów A3 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A3 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A3 cudzysłów przecinek cudzysłów A4 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A3 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A5 cudzysłów przecinek cudzysłów A5 cudzysłów zamknij nawias klamrowy średnik.
Linia 67. int otwórz nawias kwadratowy zamknij nawias kwadratowy liczbaKartek znak równości otwórz nawias klamrowy 88 przecinek 88 przecinek 6 przecinek 44 przecinek 74 przecinek 115 przecinek 12 przecinek 12 przecinek 178 przecinek 42 przecinek 35 przecinek 69 przecinek 30 przecinek 43 przecinek 6 przecinek 167 przecinek 49 przecinek 44 przecinek 111 przecinek 44 zamknij nawias klamrowy średnik.
Linia 68. String otwórz nawias kwadratowy zamknij nawias kwadratowy okladka znak równości otwórz nawias klamrowy cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów twarda cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów twarda cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów przecinek cudzysłów miekka cudzysłów zamknij nawias klamrowy średnik.
Linia 70. prawy ukośnik prawy ukośnik podpunkt 1.
Linia 71. int l podkreślnik bledow znak równości 0 średnik.
Linia 73. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 74. if otwórz nawias okrągły rodzaj otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości cudzysłów zeszyt cudzysłów zamknij nawias okrągły.
Linia 75. if otwórz nawias okrągły okladka otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości cudzysłów miekka cudzysłów ampersant ampersant liczbaKartek otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny 110 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 76. l podkreślnik bledow plus plus średnik.
Linia 77. continue średnik.
Linia 78. zamknij nawias klamrowy.
Linia 79. if otwórz nawias okrągły rodzaj otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości cudzysłów notatnik cudzysłów zamknij nawias okrągły.
Linia 80. if otwórz nawias okrągły liczbaKartek otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny 30 kreska pionowa kreska pionowa liczbaKartek otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny 85 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 81. l podkreślnik bledow plus plus średnik.
Linia 82. continue średnik.
Linia 83. zamknij nawias klamrowy.
Linia 84. if otwórz nawias okrągły rodzaj otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości cudzysłów kalendarz cudzysłów zamknij nawias okrągły otwórz nawias klamrowy.
Linia 85. if otwórz nawias okrągły rozmiar otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości cudzysłów A3 cudzysłów ampersant ampersant okladka otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości cudzysłów miekka cudzysłów zamknij nawias okrągły otwórz nawias klamrowy.
Linia 86. l podkreślnik bledow plus plus średnik.
Linia 87. continue średnik.
Linia 88. zamknij nawias klamrowy else if otwórz nawias okrągły liczbaKartek otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości 6 ampersant ampersant liczbaKartek otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości 12 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 89. l podkreślnik bledow plus plus średnik.
Linia 90. continue średnik.
Linia 91. zamknij nawias klamrowy.
Linia 92. zamknij nawias klamrowy.
Linia 93. Produkt p znak równości new Produkt otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 94. p kropka id znak równości idProduktu otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 95. p kropka rodzaj znak równości rodzaj otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 96. p kropka rozmiar znak równości rozmiar otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 97. p kropka liczba znak równości liczbaKartek otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 98. p kropka okladka znak równości okladka otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 99. dane kropka addElement otwórz nawias okrągły p zamknij nawias okrągły średnik.
Linia 100. zamknij nawias klamrowy.
Linia 102. prawy ukośnik prawy ukośnik przygotowanie kategorii.
Linia 103. Vector otwórz nawias ostrokątny Kategoria zamknij nawias ostrokątny zeszyty znak równości new Vector otwórz nawias ostrokątny Kategoria zamknij nawias ostrokątny otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 104. Vector otwórz nawias ostrokątny Kategoria zamknij nawias ostrokątny notatniki znak równości new Vector otwórz nawias ostrokątny Kategoria zamknij nawias ostrokątny otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 105. Vector otwórz nawias ostrokątny Kategoria zamknij nawias ostrokątny kalendarze znak równości new Vector otwórz nawias ostrokątny Kategoria zamknij nawias ostrokątny otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 107. Produkt p znak równości new Produkt otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 108. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny dane kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 109. p znak równości dane kropka get otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 110. if otwórz nawias okrągły p kropka rodzaj znak równości znak równości cudzysłów zeszyt cudzysłów zamknij nawias okrągły otwórz nawias klamrowy.
Linia 111. dodajProdukt otwórz nawias okrągły zeszyty przecinek p zamknij nawias okrągły średnik.
Linia 112. zamknij nawias klamrowy else if otwórz nawias okrągły p kropka rodzaj znak równości znak równości cudzysłów notatnik cudzysłów zamknij nawias okrągły otwórz nawias klamrowy.
Linia 113. dodajProdukt otwórz nawias okrągły notatniki przecinek p zamknij nawias okrągły średnik.
Linia 114. zamknij nawias klamrowy else if otwórz nawias okrągły p kropka rodzaj znak równości znak równości cudzysłów kalendarz cudzysłów zamknij nawias okrągły otwórz nawias klamrowy.
Linia 115. dodajProdukt otwórz nawias okrągły kalendarze przecinek p zamknij nawias okrągły średnik.
Linia 116. zamknij nawias klamrowy.
Linia 117. zamknij nawias klamrowy.
Linia 119. prawy ukośnik prawy ukośnik podpunkt 1.
Linia 120. System kropka out kropka println otwórz nawias okrągły l podkreślnik bledow zamknij nawias okrągły średnik.
Linia 122. prawy ukośnik prawy ukośnik podpunkt 2 i 3.
Linia 123. int x znak równości 0 średnik.
Linia 124. int x podkreślnik kartki znak równości 0 średnik.
Linia 125. int y znak równości 0 średnik.
Linia 126. int y podkreślnik kartki znak równości 0 średnik.
Linia 127. int z znak równości 0 średnik.
Linia 128. int z podkreślnik kartki znak równości 0 średnik.
Linia 130. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny zeszyty kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 131. if otwórz nawias okrągły zeszyty kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow zamknij nawias ostrokątny x zamknij nawias okrągły.
Linia 132. x znak równości zeszyty kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow średnik.
Linia 133. x podkreślnik kartki plus znak równości zeszyty kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka liczba asterysk zeszyty kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow średnik.
Linia 134. zamknij nawias klamrowy.
Linia 136. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny notatniki kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 137. if otwórz nawias okrągły notatniki kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow zamknij nawias ostrokątny y zamknij nawias okrągły.
Linia 138. y znak równości notatniki kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow średnik.
Linia 139. y podkreślnik kartki plus znak równości notatniki kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka liczba asterysk notatniki kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow średnik.
Linia 140. zamknij nawias klamrowy.
Linia 142. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny kalendarze kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 143. if otwórz nawias okrągły kalendarze kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow zamknij nawias ostrokątny z zamknij nawias okrągły.
Linia 144. z znak równości kalendarze kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow średnik.
Linia 145. z podkreślnik kartki plus znak równości kalendarze kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka liczba asterysk kalendarze kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka l podkreślnik produktow średnik.
Linia 146. zamknij nawias klamrowy.
Linia 148. prawy ukośnik prawy ukośnik podpunkt 2 dwukropek zeszyt przecinek notatnik przecinek kalendarz.
Linia 149. System kropka out kropka println otwórz nawias okrągły x plus cudzysłów cudzysłów plus y plus cudzysłów cudzysłów plus z zamknij nawias okrągły średnik.
Linia 151. prawy ukośnik prawy ukośnik cd kropka podpunkt 3.
Linia 152. x znak równości zeszyty kropka size otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 153. y znak równości notatniki kropka size otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 154. z znak równości kalendarze kropka size otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 156. if otwórz nawias okrągły x zamknij nawias ostrokątny y ampersant ampersant x zamknij nawias ostrokątny z zamknij nawias okrągły.
Linia 157. System kropka out kropka println otwórz nawias okrągły cudzysłów zeszyty cudzysłów plus cudzysłów cudzysłów plus x podkreślnik kartki zamknij nawias okrągły średnik.
Linia 158. else if otwórz nawias okrągły y zamknij nawias ostrokątny x ampersant ampersant y zamknij nawias ostrokątny z zamknij nawias okrągły.
Linia 159. System kropka out kropka println otwórz nawias okrągły cudzysłów notatniki cudzysłów plus cudzysłów cudzysłów plus y podkreślnik kartki zamknij nawias okrągły średnik.
Linia 160. else.
Linia 161. System kropka out kropka println otwórz nawias okrągły cudzysłów kalendarze cudzysłów plus cudzysłów cudzysłów plus z podkreślnik kartki zamknij nawias okrągły średnik.
Linia 163. prawy ukośnik prawy ukośnik podpunkt 4.
Linia 164. String czyIstnieje znak równości cudzysłów nie cudzysłów średnik.
Linia 165. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny dane kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 166. if otwórz nawias okrągły czyPierwsza otwórz nawias okrągły dane kropka get otwórz nawias okrągły i zamknij nawias okrągły kropka liczba zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 167. czyIstnieje znak równości cudzysłów tak cudzysłów średnik.
Linia 168. break średnik.
Linia 169. zamknij nawias klamrowy.
Linia 170. zamknij nawias klamrowy.
Linia 172. System kropka out kropka println otwórz nawias okrągły cudzysłów tak cudzysłów zamknij nawias okrągły średnik.
Linia 173. zamknij nawias klamrowy.
Linia 175. zamknij nawias klamrowy.
import java.util.*;
class Produkt {
public int id;
public String rodzaj;
public String rozmiar;
public int liczba;
public String okladka;
}
class Kategoria {
public String rozmiar;
public int liczba;
public String okladka;
public int l_produktow;
}
public class Main {
// funkcja do podpunktu 4
static boolean czyPierwsza(int liczba) {
if (liczba < 2) {
return false;
}
int i = 2;
while (i*i <= liczba) {
if (liczba % i == 0) {
return false;
}
i++;
}
return true;
}
static Kategoria dodajKategorie(Produkt produkt) {
Kategoria k = new Kategoria();
k.rozmiar = produkt.rozmiar;
k.liczba = produkt.liczba;
k.okladka = produkt.okladka;
k.l_produktow = 1;
return k;
}
static int dodajProdukt(Vector <Kategoria> kat, Produkt produkt) {
if (!kat.isEmpty()) {
Kategoria k;
for (int i = 0; i < kat.size(); i++) {
k = kat.get(i);
if (k.rozmiar == produkt.rozmiar && k.liczba == produkt.liczba && k.okladka == produkt.okladka) {
k.l_produktow++;
return 0;
}
}
kat.addElement(dodajKategorie(produkt));
}
else
kat.addElement(dodajKategorie(produkt));
return 0;
}
public static void main(String[] args) {
int n = 20;
Vector<Produkt> dane = new Vector<Produkt>;();
int[] idProduktu = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
String[] rodzaj = {"zeszyt", "zeszyt", "kalendarz", "zeszyt", "notatnik", "zeszyt", "kalendarz", "kalendarz", "zeszyt", "notatnik", "notatnik", "notatnik", "zeszyt", "zeszyt", "kalendarz", "zeszyt", "notatnik", "zeszyt", "zeszyt", "zeszyt"};
String[] rozmiar = {"A3", "A3", "A3", "A5", "A5", "A5", "A4", "A3", "A3", "A5", "A3", "A5", "A3", "A4", "A5", "A3", "A5", "A5", "A5", "A5"};
int[] liczbaKartek = {88, 88, 6, 44, 74, 115, 12, 12, 178, 42, 35, 69, 30, 43, 6, 167, 49, 44, 111, 44};
String[] okladka = {"miekka", "miekka", "miekka", "miekka", "miekka", "miekka", "miekka", "miekka", "miekka", "miekka", "miekka", "twarda", "miekka", "twarda", "miekka", "miekka", "miekka", "miekka", "miekka", "miekka"};
// podpunkt 1
int l_bledow = 0;
for (int i = 0; i < n; i++) {
if (rodzaj[i] == "zeszyt")
if (okladka[i] == "miekka" && liczbaKartek[i] > 110) {
l_bledow++;
continue;
}
if (rodzaj[i] == "notatnik")
if (liczbaKartek[i] < 30 || liczbaKartek[i] > 85) {
l_bledow++;
continue;
}
if (rodzaj[i] == "kalendarz") {
if (rozmiar[i] != "A3" && okladka[i] != "miekka") {
l_bledow++;
continue;
} else if (liczbaKartek[i] != 6 && liczbaKartek[i] != 12) {
l_bledow++;
continue;
}
}
Produkt p = new Produkt();
p.id = idProduktu[i];
p.rodzaj = rodzaj[i];
p.rozmiar = rozmiar[i];
p.liczba = liczbaKartek[i];
p.okladka = okladka[i];
dane.addElement(p);
}
// przygotowanie kategorii
Vector<Kategoria> zeszyty = new Vector<Kategoria>();
Vector<Kategoria> notatniki = new Vector<Kategoria>();
Vector<Kategoria> kalendarze = new Vector<Kategoria>();
Produkt p = new Produkt();
for (int i = 0; i < dane.size(); i++) {
p = dane.get(i);
if (p.rodzaj == "zeszyt") {
dodajProdukt(zeszyty, p);
} else if (p.rodzaj == "notatnik") {
dodajProdukt(notatniki, p);
} else if (p.rodzaj == "kalendarz") {
dodajProdukt(kalendarze, p);
}
}
// podpunkt 1
System.out.println(l_bledow);
// podpunkt 2 i 3
int x = 0;
int x_kartki = 0;
int y = 0;
int y_kartki = 0;
int z = 0;
int z_kartki = 0;
for (int i = 0; i < zeszyty.size(); i++) {
if (zeszyty.get(i).l_produktow > x)
x = zeszyty.get(i).l_produktow;
x_kartki += zeszyty.get(i).liczba * zeszyty.get(i).l_produktow;
}
for (int i = 0; i < notatniki.size(); i++) {
if (notatniki.get(i).l_produktow > y)
y = notatniki.get(i).l_produktow;
y_kartki += notatniki.get(i).liczba * notatniki.get(i).l_produktow;
}
for (int i = 0; i < kalendarze.size(); i++) {
if (kalendarze.get(i).l_produktow > z)
z = kalendarze.get(i).l_produktow;
z_kartki += kalendarze.get(i).liczba * kalendarze.get(i).l_produktow;
}
// podpunkt 2: zeszyt, notatnik, kalendarz
System.out.println(x + " " + y + " " + z);
// cd. podpunkt 3
x = zeszyty.size();
y = notatniki.size();
z = kalendarze.size();
if (x > y && x > z)
System.out.println("zeszyty" + " " + x_kartki);
else if (y > x && y > z)
System.out.println("notatniki" + " " + y_kartki);
else
System.out.println("kalendarze" + " " + z_kartki);
// podpunkt 4
String czyIstnieje = "nie";
for (int i = 0; i < dane.size(); i++) {
if (czyPierwsza(dane.get(i).liczba)) {
czyIstnieje = "tak";
break;
}
}
System.out.println("tak");
}
}
Wyniki dla pliku papierniczy.txt:
Linia 1. 73.
Linia 2. 3 4 59.
Linia 3. notatniki 8951.
Linia 4. tak.