Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Main;
- /*
- Dla interfejsu IAnagramChecker zaimplementuj klasę AnagramChecker implementującą ten interfejs.
- Napisz test sprawdzający działanie tej klasy.
- */
- import Files.AnagramChecker;
- public class Main
- {
- public static void main(String[] args)
- {
- AnagramChecker anagram1 = new AnagramChecker("adam", "dama");
- boolean b1 = anagram1.isAnagram();
- AnagramChecker anagram2 = new AnagramChecker("samochod", "auto");
- boolean b2 = anagram2.isAnagram();
- if(b1)
- {
- System.out.println(anagram1.getWord1() + " oraz " + anagram1.getWord2() + " sa anagramami");
- }
- else
- {
- System.out.println(anagram1.getWord1() + " oraz " + anagram1.getWord2() + " nie sa anagramami");
- }
- System.out.println(" ");
- if(b2)
- {
- System.out.println(anagram2.getWord1() + " oraz " + anagram2.getWord2() + " sa anagramami");
- }
- else
- {
- System.out.println(anagram2.getWord1() + " oraz " + anagram2.getWord2() + " nie sa anagramami");
- }
- }
- }
- package Files;
- /*
- Interfejs obiektu który sprawdza czy dane słowa są anagramami.
- Anagram jest słowem lub frazą, która powstała
- przez zmianę kolejności liter w oryginalnym słowie lub frazie.
- Zobacz kilka przykładów na http://www.wordsmith.org/anagram/hof.html
- */
- public interface IAnagramChecker
- {
- /** Sprawdza czy jedno slowo jest anagramem drugiego.
- * Wszystkie niealfanumeryczne znaki są ignorowane.
- * Wielkość liter nie ma znaczenia.
- * //@param word1 dowolny niepusty string różny od null.
- * //@param word2 dowolny niepusty string różny od null.
- * @return true wtedy i tylko wtedy gdy word1 jest anagramem word2.
- */
- //zmienilam i ta metoda nie przyjmuje zadnych argumentow, bo korzystam z konstruktora w klasie AnagramChecker
- public boolean isAnagram();
- }
- package Files;
- //adam jest anagramem dama
- //anagramy powstaja poprzez zmiane kolejnosci liter
- //czyli oba slowa musza miec taka sama dlugosc i skladac sie z tych samych liter
- public class AnagramChecker implements IAnagramChecker
- {
- private String word1;
- private String word2;
- public AnagramChecker(String word1, String word2)
- {
- this.word1 = word1;
- this.word2 = word2;
- }
- public String getWord1()
- {
- return this.word1;
- }
- public String getWord2()
- {
- return this.word2;
- }
- public void sort(char[] tab, int n) //sortowanie babelkowe, bubblesort
- {
- char temp;
- int i, zmiana;
- do
- {
- zmiana = 0;
- i = n - 1;
- do
- {
- i--;
- if (tab[i + 1] < tab[i])
- {
- temp = tab[i];
- tab[i] = tab[i + 1];
- tab[i + 1] = temp;
- zmiana = 1;
- }
- } while (i != 0);
- } while (zmiana != 0);
- }
- public boolean isAnagram()
- {
- int l1 = word1.length();
- int l2 = word2.length();
- char[] w1 = new char[l1];
- char[] w2 = new char[l2];
- for (int i=0; i<l1; i++)
- {
- w1[i] = word1.charAt(i);
- }
- for(int i=0; i<l2; i++)
- {
- w2[i] = word2.charAt(i);
- }
- //jesli stringi sa roznej dlugosci nie moga byc anagramami
- if(l1 != l2)
- return false;
- //teraz trzeba oba stringi posortowac, czyli posortowac tablice w1 i w2
- //uzyje sortowania babelkowego
- sort(w1, l1);
- sort(w2, l2);
- //porownanie obu stringow
- for(int i=0; i<l1; i++) //bo l1=l2
- {
- if(w1[i] != w2[i])
- return false;
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement