Advertisement
ivafinki

6) Лаб вежба: Хеширање - Лозинки Problem 1

Dec 20th, 2020
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.89 KB | None | 0 0
  1. /* 6) Лаб вежба: Хеширање - Лозинки Problem 1 (0 / 0) */
  2. /* Потребно е да се симулира најава на еден систем. Притоа корисникот внесува корисничко име и лозинка. Доколку корисничкото име одговара со лозинката тогаш се печати Najaven, доколку не одговара се печати Nenajaven и на корисникот му се дава повторна шанса на корисникот да внесе корисничко име и лозинка. Во моментот кога корисникот ќе биде најавен престануваат обидите за најава.
  3.  
  4. Влез: Прво се дава број N на кориснички имиња и лозинки кои ќе бидат внесени во системот. Во наредните N реда се дадени корисничките имиња и лозинки разделени со едно празно место. Потоа се даваат редови со кориснички имиња и лозинки на корисници кои се обидувата да се најават (Пр. ana banana) За означување на крај на обидите во редицата се дава зборот KRAJ
  5.  
  6. Излез: За секој од влезовите кои се обид за најава се печати Nenajaven се додека не дoбиеме Najaven или додека имаме обиди за најава.
  7.  
  8. Пример. Влез: 3 ana banana pero zdero trpe trpi ana ana ana banana trpe trpi KRAJ
  9.  
  10. Излез: Nenajaven Najaven
  11.  
  12. Забелешка: Работете со хеш табела со затворени кофички. Самите решавате за големината на хеш табела, а хеш функцијата ви е дадена.
  13.  
  14. Име на класа: Lozinki */
  15. /* Sample input
  16. 3
  17. ana banana
  18. pero zdero
  19. trpe trpi
  20. ana ana
  21. ana bannana
  22. trpe trpe
  23. KRAJ
  24.  
  25. Sample output
  26. Nenajaven
  27. Nenajaven
  28. Nenajaven */
  29. /*
  30. даден код:
  31. import java.io.BufferedReader;
  32. import java.io.IOException;
  33. import java.io.InputStreamReader;
  34.  
  35.  
  36. public class Lozinki {
  37. public static void main (String[] args) throws IOException {
  38. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  39. int N = Integer.parseInt(br.readLine());
  40.  
  41. for(int i=1;i<=N;i++){
  42. String imelozinka = br.readLine();
  43. String[] pom = imelozinka.split(" ");
  44. }
  45.  
  46. }
  47. }
  48. решение подоле: */
  49.  
  50.  
  51. import java.io.BufferedReader;
  52. import java.io.IOException;
  53. import java.io.InputStreamReader;
  54.  
  55.  
  56. public class Lozinki {
  57. public static void main (String[] args) throws IOException {
  58. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  59. int N = Integer.parseInt(br.readLine());
  60.  
  61.  
  62. CBHT<String,String> table = new CBHT<>(2*N);
  63. for(int i=1;i<=N;i++){
  64. String imelozinka = br.readLine();
  65. String[] pom = imelozinka.split(" ");
  66. table.insert(pom[0], pom[1]);
  67. }
  68.  
  69. while (true) {
  70. String line = br.readLine();
  71. if (line.equals("KRAJ"))
  72. break;
  73. String parts [] = line.split(" ");
  74. SLLNode<MapEntry<String,String>> temp = table.search(parts[0]);
  75. if (temp == null || !(temp.getElement().value.equals(parts[1])))
  76. System.out.println("Nenajaven");
  77. else {
  78. System.out.println("Najaven");
  79. break;
  80. }
  81.  
  82. }
  83.  
  84. }
  85. }
  86.  
  87. class CBHT<K extends Comparable<K>,E> {
  88.  
  89. private SLLNode<MapEntry<K,E>>[] buckets;
  90.  
  91. @SuppressWarnings("unchecked")
  92. public CBHT(int m) {
  93.  
  94. buckets = (SLLNode<MapEntry<K,E>>[]) new SLLNode[m];
  95. }
  96.  
  97. private int hash(K key) {
  98. // Translate key to an index of the array buckets.
  99. return Math.abs(key.hashCode()) % buckets.length;
  100. }
  101.  
  102. public SLLNode<MapEntry<K,E>> search(K targetKey) {
  103. // Find which if any node of this CBHT contains an entry whose key is
  104. // equal
  105. // to targetKey. Return a link to that node (or null if there is none).
  106. int b = hash(targetKey);
  107. SLLNode<MapEntry<K,E>> curr = buckets[b];
  108. for (; curr != null; curr = curr.succ) {
  109. if (targetKey.equals(curr.getElement().key)) {
  110. return curr;
  111. }
  112. }
  113. return null;
  114.  
  115. }
  116.  
  117. public void insert(K key, E value) {
  118.  
  119. MapEntry<K,E> newEntry = new MapEntry<K,E>(key, value);
  120. int b = hash(key);
  121. SLLNode<MapEntry<K,E>> curr = buckets[b];
  122. for (; curr != null; curr = curr.succ) {
  123. if (key.equals(curr.getElement().key)) {
  124. curr.setElement(newEntry);
  125. return;
  126. }
  127. }
  128. buckets[b] = new SLLNode<MapEntry<K,E>>(newEntry, buckets[b]);
  129. }
  130.  
  131. public void delete (K key) {
  132. // Delete the entry (if any) whose key is equal to key from this CBHT.
  133. int b = hash(key);
  134. SLLNode<MapEntry<K,E>> pred = null, curr = buckets[b];
  135. for (; curr != null; pred = curr, curr = curr.succ) {
  136. if (key.equals(curr.getElement().key)) {
  137. if (pred == null)
  138. buckets[b] = curr.succ;
  139. else
  140. pred.succ = curr.succ;
  141. return;
  142. }
  143. }
  144. }
  145.  
  146. public String toString() {
  147. String temp = "";
  148. for (int i = 0; i < buckets.length; i++) {
  149. temp += i + ":";
  150. for (SLLNode<MapEntry<K,E>> curr = buckets[i]; curr != null; curr = curr.succ) {
  151. temp += curr.getElement().toString() + " ";
  152. }
  153. temp += "\n";
  154. }
  155. return temp;
  156. }
  157.  
  158. }
  159.  
  160. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  161.  
  162. K key;
  163. E value;
  164.  
  165. public MapEntry(K key, E value) {
  166. this.key = key;
  167. this.value = value;
  168. }
  169.  
  170. @Override
  171. public int compareTo(K that) {
  172. return this.key.compareTo(that);
  173. }
  174.  
  175. @Override
  176. public String toString () {
  177. return "<" + key + "," + value + ">";
  178. }
  179. }
  180.  
  181. class SLLNode<E> {
  182.  
  183. private E element;
  184. public SLLNode<E> succ;
  185.  
  186. public SLLNode(E element, SLLNode<E> succ) {
  187. this.setElement(element);
  188. this.succ = succ;
  189. }
  190.  
  191. @Override
  192. public String toString() {
  193. return getElement().toString();
  194. }
  195.  
  196. public E getElement() {
  197. return element;
  198. }
  199.  
  200. public void setElement(E element) {
  201. this.element = element;
  202. }
  203.  
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement