SashkoKlincharov

[Java][АПС] - Подароците на Дедо Мраз

Jan 23rd, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.37 KB | None | 0 0
  1. Подароците на Дедо Мраз Задача 1 (5 / 51)
  2. Дедо Мраз преку целата година води список од деца кои биле добри и нивните адреси за да им достави подароци. Така е и со децата од Скопје,
  3. арно ама градот Скопје решил да менува називи на улици и Дедо Мраз во последен момент добива листа од изменети називи на улици за Скопје, Македонија.
  4. Проверете за дадено дете дали Дедо Мраз треба да му достави подарок (дали го има детето во списокот на добри деца) и ако треба на која адреса ќе му го достави.
  5. Дополнително за децата од Скопје да се испечати новата адреса доколку името на улицата е променето.
  6.  
  7. Влез: Во првата линија е даден број N на деца кои биле добри. Во наредните N линии се дадени името на детете и неговата адреса во посебни редови
  8. (Адресата е во формат ИмеНаУлица Број Град Држава). Потоа е даден број M на улици од Скопје кои го промениле своите име.
  9. Во наредните M линии дадени прво старите па новите имиња на улици разделени со празно место.
  10. Во последниот ред е дадено името на детете кое треба да се провери.
  11.  
  12. Излез: Ако даденото дете не било добро (т.е. го нема во списокот на добри деца) да се испечати Nema poklon,
  13. а ако било добро да се испечати валидната адреса на која ќе се достави поклонот (т.е. ако името на улицата е од Скопје, Македонија и се променило,
  14. да се испечати адресата со новиот назив на улицата).
  15.  
  16. Име на класа: DedoMrazAdresi
  17.  
  18. Делумно решение: Задачата се смета за делумно решена доколку се поминати 7 тест примери.
  19.  
  20. Забелешка: При реализација на задачите МОРА да се користат дадените структури, а не да користат помошни структури како низи или сл.
  21.  
  22.  
  23. Пример влез
  24. 5
  25. JohnDoe
  26. DriveAvenue 231 NewYork USA
  27. JaneDoe
  28. GreenStreet 821 Chicago USA
  29. PecePecevski
  30. Vodnjanska 30 Skopje Macedonia
  31. MartaMartevska
  32. Vostanichka 81 Prilep Macedonia
  33. EstebanPerez
  34. InsurgentesSur 7325 MexicoCity Mexico
  35. 5
  36. MarshalTito Makedonija
  37. Vodnjanska MajkaTereza
  38. Leninova Aminta3
  39. MajkaTereza AdolfCiborovski
  40. Vojvodina KiroGligorov
  41. PecePecevski
  42. Пример излез
  43. MajkaTereza 30 Skopje Macedonia
  44.  
  45.  
  46.  
  47. import java.util.Scanner;
  48.  
  49. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  50.  
  51. K key;
  52. E value;
  53.  
  54. public MapEntry (K key, E val) {
  55. this.key = key;
  56. this.value = val;
  57. }
  58.  
  59. public int compareTo (K that) {
  60. @SuppressWarnings("unchecked")
  61. MapEntry<K,E> other = (MapEntry<K,E>) that;
  62. return this.key.compareTo(other.key);
  63. }
  64.  
  65. public String toString () {
  66. return "(" + key + "," + value + ")";
  67. }
  68. }
  69.  
  70. class SLLNode<E> {
  71. protected E element;
  72. protected SLLNode<E> succ;
  73.  
  74. public SLLNode(E elem, SLLNode<E> succ) {
  75. this.element = elem;
  76. this.succ = succ;
  77. }
  78.  
  79. @Override
  80. public String toString() {
  81. return element.toString();
  82. }
  83. }
  84.  
  85. class CBHT<K extends Comparable<K>, E> {
  86.  
  87. private SLLNode<MapEntry<K,E>>[] buckets;
  88.  
  89. @SuppressWarnings("unchecked")
  90. public CBHT(int m) {
  91. buckets = (SLLNode<MapEntry<K,E>>[]) new SLLNode[m];
  92. }
  93.  
  94. private int hash(K key) {
  95. return Math.abs(key.hashCode()) % buckets.length;
  96. }
  97.  
  98. public SLLNode<MapEntry<K,E>> search(K targetKey) {
  99. int b = hash(targetKey);
  100. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  101. if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
  102. return curr;
  103. }
  104. return null;
  105. }
  106.  
  107.  
  108. public void insert(K key, E val) { // Insert the entry <key, val> into this CBHT.
  109. MapEntry<K, E> newEntry = new MapEntry<K, E>(key, val);
  110. int b = hash(key);
  111. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  112. if (key.equals(((MapEntry<K, E>) curr.element).key)) {
  113. curr.element = newEntry;
  114. return;
  115. }
  116. }
  117. buckets[b] = new SLLNode<MapEntry<K,E>>(newEntry, buckets[b]);
  118. }
  119.  
  120. public void delete(K key) {
  121. int b = hash(key);
  122. for (SLLNode<MapEntry<K,E>> pred = null, curr = buckets[b]; curr != null; pred = curr, curr = curr.succ) {
  123. if (key.equals(((MapEntry<K,E>) curr.element).key)) {
  124. if (pred == null)
  125. buckets[b] = curr.succ;
  126. else
  127. pred.succ = curr.succ;
  128. return;
  129. }
  130. }
  131. }
  132.  
  133. public String toString() {
  134. String temp = "";
  135. for (int i = 0; i < buckets.length; i++) {
  136. temp += i + ":";
  137. for (SLLNode<MapEntry<K,E>> curr = buckets[i]; curr != null; curr = curr.succ) {
  138. temp += curr.element.toString() + " ";
  139. }
  140. temp += "\n";
  141. }
  142. return temp;
  143. }
  144.  
  145. }
  146.  
  147. class Info{
  148. String namekid;
  149. String ulica;
  150. int brojulica;
  151. String grad;
  152. String drzava;
  153.  
  154. public Info(String namekid, String ulica, int brojulica, String grad, String drzava) {
  155. this.namekid = namekid;
  156. this.ulica = ulica;
  157. this.brojulica = brojulica;
  158. this.grad = grad;
  159. this.drzava = drzava;
  160. }
  161. }
  162.  
  163.  
  164. public class DedoMrazAdresi {
  165.  
  166. public static void main(String[] args) {
  167. Scanner input = new Scanner(System.in);
  168. int n = input.nextInt();
  169. input.nextLine();
  170.  
  171. CBHT<String,Info> hashtable = new CBHT<String,Info>(n*2);
  172.  
  173. for(int i=0;i<n;i++) {
  174. String name = input.next();
  175. input.nextLine();
  176. String [] data = input.nextLine().split(" ");
  177. String ulica = data[0];
  178. int brojulica = Integer.parseInt(data[1]);
  179. String grad = data[2];
  180. String drzava = data[3];
  181. Info info = new Info(name,ulica,brojulica,grad,drzava);
  182. hashtable.insert(name, info);
  183. }
  184.  
  185. int m = input.nextInt();
  186. input.nextLine();
  187. CBHT<String,String> hashtable2 = new CBHT<String,String>(m*2);
  188. for(int i=0;i<m;i++) {
  189. String [] ulici = input.nextLine().split(" ");
  190. String od = ulici[0];
  191. String vo = ulici[1];
  192.  
  193. hashtable2.insert(ulici[0], ulici[1]);
  194. }
  195. String detestosebara = input.next();
  196. input.nextLine();
  197. SLLNode<MapEntry<String,Info>> node = hashtable.search(detestosebara);
  198. if(node!=null) {
  199.  
  200. if(node.element.value.drzava.equals("Macedonia")) {
  201. String getstaraulica = node.element.value.ulica;
  202. SLLNode<MapEntry<String,String>> node2 = hashtable2.search(getstaraulica);
  203. node.element.value.ulica = node2.element.value;
  204. }
  205. System.out.println(node.element.value.ulica + " " + node.element.value.brojulica + " " + node.element.value.grad + " " + node.element.value.drzava);
  206. }
  207. else {
  208. System.out.println("Nema poklon");
  209. }
  210. }
  211.  
  212. }
Add Comment
Please, Sign In to add comment