Advertisement
Guest User

Untitled

a guest
Dec 1st, 2015
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. Wymagamy użycia własnej implementacji list wskaźnikowych!
  2.  
  3.  
  4. Pewien podręcznik ma na końcu indeks haseł. Z każdym hasłem skojarzony jest wykaz stron, na których pojawia się dane hasło.
  5.  
  6. Zadaniem programisty jest stworzenie struktury, która umożliwia dodawanie nowych haseł, dodawanie stron do hasła, jak również usuwanie hasła oraz stron. Hasła mają być uporządkowane alfabetycznie, a strony rosnąco. Dopuszczone są tylko znaki z alfabetu angielskiego. Przez porządek alfabetyczny rozumiemy kolejność leksykograficzną wg kodów ASCII. Strony są liczbami naturalnymi, mniejszymi, lub równymi niż 100 1000 (>0 & <= 100 1000)
  7.  
  8. Bardziej szczegółowo:
  9. •- program w pierwszym wierszu otrzymuje liczbę instrukcji do wykonania.
  10. •- następnie w każdym wierszu wejścia zapisana jest pojedyncza instrukcja.
  11. •- program powinien przetworzyć instrukcji jedna po drugiej. Oto dopuszczalne instrukcje:
  12. -I - insert. Polecenie dodania do spisu hasła razem z wykazem stron tego hasła. Jeśli hasło istniało w spisie należy do wykazu jego stron dodać w odpowiednie miejsca jedynie te strony, które nie istniały jeszcze w tym wykazie.
  13.  
  14. -D - delete. Program usuwa podane strony w wykazie stron podanego hasła, albo całe hasło, jeśli nie zostanie nic w wykazie stron.
  15.  
  16. -F - find. Program sprawdza, czy hasło występuje na podanej stronie. Zwraca 0, gdy nie występuje lub, gdy nie ma takiego hasła i 1, gdy występuje.
  17.  
  18. A - find all . Program zwraca wszystkie strony, gdzie występuje dane hasło, poprzedzając je hasłem lub -1, gdy nie ma takiego hasła.
  19.  
  20. P - print. Wyświetl całą listę Format:
  21. hasło spacja strony po spacjach endline
  22. itd hasła są posortowane alfabetycznie, a strony rosnąco
  23.  
  24. Hasła w indeksie nie mogą się dublować. Dla jednego hasła strony także nie mogą się dublować.
  25.  
  26. Formaty poleceń:
  27.  
  28.  
  29. I etykieta liczbaStron strona1 strona2...
  30. Na początku jest hasło, potem liczba stron, które wstawiamy, a następnie strony oddzielone spacjami. Strony są nie posortowane.
  31.  
  32. D etykieta liczbaStron strona1 strona2...
  33.  
  34. Na początku jest hasło, potem ilość stron, które usuwamy, a następnie strony oddzielone spacjami. Gdy podana strona nie znajduje się na liście, program ignoruje usunięcie tej strony. To samo w przypadku, gdy próbujemy usunąć hasło, którego nie ma. Strony są nie posortowane
  35.  
  36. F etykieta strona
  37.  
  38.  
  39.  
  40. A etykieta
  41.  
  42.  
  43.  
  44. P
  45.  
  46.  
  47.  
  48. Formaty wyników:
  49. ◦F - zwraca 0 lub 1
  50. ◦A - zwraca: haslo strona1 strona 2...
  51. lub -1, gdy nie ma takiego hasła. Strony mają być wyświetlone w porządku rosnącym.
  52. ◦P - Wyświetl całą listę Format: hasło spacja strony po spacjach i w następnej linii dalej. (Hasła posortowane alfabetycznie, a strony rosnąco). Próba wyświetlenia pustego katalogu - w którym nie ma żadnych haseł nie powoduje żadnej akcji.
  53.  
  54. Etykiety (nazwy hasła) składają się z tylko z liter. Strony są liczbami naturalnymi (>0).
  55.  
  56. Przykładowe wejście:
  57. 4
  58. I Adam 3 12 5 8
  59. I Adrian 2 45 78
  60. I Adam 2 5 9
  61. P
  62.  
  63.  
  64. Wyjście:
  65. Adam 5 8 9 12
  66. Adrian 45 78
  67.  
  68.  
  69. Przykładowe wejście2:
  70. 4
  71. I Adam 3 12 5 8
  72. I Adrian 2 45 78
  73. I Adam 2 5 9
  74. D Adam 1 9
  75. P
  76. F Adam 8
  77.  
  78.  
  79. Wyjście:
  80. Adam 5 8 12
  81. Adrian 45 78
  82. 1
  83.  
  84.  
  85. Przykładowe wejście3:
  86. 14
  87. I Adam 4 12 34 56 87
  88. I Adrian 3 12 23 55
  89. I Adam 3 12 14 38
  90. D Adrian 1 12
  91. A Adam
  92. F Adrian 12
  93. P
  94. I Cdrian 2 56 8
  95. F Cdrian 8
  96. P
  97. D Cdrian 3 56 8 90
  98. F Cdrian 8
  99. A Cdrian
  100. P
  101.  
  102.  
  103. Wyjście:
  104. Adam 12 14 34 38 56 87
  105. 0
  106. Adam 12 14 34 38 56 87
  107. Adrian 23 55
  108. 1
  109. Adam 12 14 34 38 56 87
  110. Adrian 23 55
  111. Cdrian 8 56
  112. 0
  113. -1
  114. Adam 12 14 34 38 56 87
  115. Adrian 23 55
  116.  
  117.  
  118. Zabrania się korzystania z tablic oraz z klas bazujących na tablicach tj. vector.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement