Mitrezzz

АПС Лаб 6 Лозинки

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