G2A Many GEOs
SHARE
TWEET

Anagramy

Karolina99 Apr 10th, 2020 142 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package Main;
  2.  
  3. /*
  4. Dla interfejsu IAnagramChecker zaimplementuj klasę AnagramChecker implementującą ten interfejs.
  5. Napisz test sprawdzający działanie tej klasy.
  6. */
  7.  
  8. import Files.AnagramChecker;
  9.  
  10. public class Main
  11. {
  12.     public static void main(String[] args)
  13.     {
  14.         AnagramChecker anagram1 = new AnagramChecker("adam", "dama");
  15.         boolean b1 = anagram1.isAnagram();
  16.  
  17.         AnagramChecker anagram2 = new AnagramChecker("samochod", "auto");
  18.         boolean b2 = anagram2.isAnagram();
  19.  
  20.         if(b1)
  21.         {
  22.             System.out.println(anagram1.getWord1() + " oraz " + anagram1.getWord2() + " sa anagramami");
  23.         }
  24.         else
  25.         {
  26.             System.out.println(anagram1.getWord1() + " oraz " + anagram1.getWord2() + " nie sa anagramami");
  27.         }
  28.  
  29.         System.out.println(" ");
  30.  
  31.         if(b2)
  32.         {
  33.             System.out.println(anagram2.getWord1() + " oraz " + anagram2.getWord2() + " sa anagramami");
  34.         }
  35.         else
  36.         {
  37.             System.out.println(anagram2.getWord1() + " oraz " + anagram2.getWord2() + " nie sa anagramami");
  38.         }
  39.     }
  40. }
  41.  
  42. package Files;
  43.  
  44. /*
  45. Interfejs obiektu który sprawdza czy dane słowa są anagramami.
  46. Anagram jest słowem lub frazą, która powstała
  47. przez zmianę kolejności liter w oryginalnym słowie lub frazie.
  48. Zobacz kilka przykładów na http://www.wordsmith.org/anagram/hof.html
  49. */
  50.  
  51. public interface IAnagramChecker
  52. {
  53.     /** Sprawdza czy jedno slowo jest anagramem drugiego.
  54.      * Wszystkie niealfanumeryczne znaki są ignorowane.
  55.      * Wielkość liter nie ma znaczenia.
  56.      * //@param word1 dowolny niepusty string różny od null.
  57.      * //@param word2 dowolny niepusty string różny od null.
  58.      * @return true wtedy i tylko wtedy gdy word1 jest anagramem word2.
  59.      */
  60.     //zmienilam i ta metoda nie przyjmuje zadnych argumentow, bo korzystam z konstruktora w klasie AnagramChecker
  61.     public boolean isAnagram();
  62. }
  63.  
  64. package Files;
  65.  
  66. //adam jest anagramem dama
  67. //anagramy powstaja poprzez zmiane kolejnosci liter
  68. //czyli oba slowa musza miec taka sama dlugosc i skladac sie z tych samych liter
  69.  
  70. public class AnagramChecker implements IAnagramChecker
  71. {
  72.     private String word1;
  73.     private String word2;
  74.  
  75.     public AnagramChecker(String word1, String word2)
  76.     {
  77.         this.word1 = word1;
  78.         this.word2 = word2;
  79.     }
  80.  
  81.     public String getWord1()
  82.     {
  83.         return this.word1;
  84.     }
  85.  
  86.     public String getWord2()
  87.     {
  88.         return this.word2;
  89.     }
  90.  
  91.     public void sort(char[] tab, int n) //sortowanie babelkowe, bubblesort
  92.     {
  93.         char temp;
  94.         int i, zmiana;
  95.         do
  96.         {
  97.             zmiana = 0;
  98.             i = n - 1;
  99.             do
  100.             {
  101.                 i--;
  102.                 if (tab[i + 1] < tab[i])
  103.                 {
  104.                     temp = tab[i];
  105.                     tab[i] = tab[i + 1];
  106.                     tab[i + 1] = temp;
  107.                     zmiana = 1;
  108.                 }
  109.             } while (i != 0);
  110.         } while (zmiana != 0);
  111.     }
  112.  
  113.     public boolean isAnagram()
  114.     {
  115.         int l1 = word1.length();
  116.         int l2 = word2.length();
  117.  
  118.         char[] w1 = new char[l1];
  119.         char[] w2 = new char[l2];
  120.  
  121.         for (int i=0; i<l1; i++)
  122.         {
  123.             w1[i] = word1.charAt(i);
  124.         }
  125.  
  126.         for(int i=0; i<l2; i++)
  127.         {
  128.             w2[i] = word2.charAt(i);
  129.         }
  130.  
  131.         //jesli stringi sa roznej dlugosci nie moga byc anagramami
  132.         if(l1 != l2)
  133.             return false;
  134.  
  135.         //teraz trzeba oba stringi posortowac, czyli posortowac tablice w1 i w2
  136.         //uzyje sortowania babelkowego
  137.  
  138.         sort(w1, l1);
  139.         sort(w2, l2);
  140.  
  141.         //porownanie obu stringow
  142.         for(int i=0; i<l1; i++) //bo l1=l2
  143.         {
  144.             if(w1[i] != w2[i])
  145.                 return false;
  146.         }
  147.  
  148.         return true;
  149.     }
  150. }
RAW Paste Data
Ledger Nano X - The secure hardware wallet
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top