Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Komputerowa realizacja w języku C++

Zastanówmy się, jak zaimplementować w języku C++ sprawdzenie, czy podana para wyrazów to anagramy. Zanim to nastąpi, przypomnij sobie niektóre zagadnienia:

  • funkcje – napiszemy osobną funkcję do sprawdzania, czy podana para słów to anagramy. Przez użycie tej formy program stanie się bardziej czytelny i optymalny – będzie można sprawdzić kilka par wyrazów bez powielania kodu,

  • tablice znaków – to w nich będziemy przechowywać nasze wyrazy. Przypomnij sobie, jak używać string i jak wywoływać poszczególne znaki,

  • sortowaniesortowaniesortowanie – za jego pomocą posortujemy litery w danych słowach, a następnie sprawdzimy, czy są one równe. Użyjemy do tego funkcji sort(),

  • zmienna logiczna – taka będzie cała nasza funkcja czyAnagram(). W wypadku, gdy podana para słow spełni warunki, zwróci wartość logiczną true, w przeciwnym false.

Spójrzmy na kod gotowego programu napisanego w języku C++, który w następnej sekcji właśnie będziemy tworzyć:

Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny. Linia 3. kratka include otwórz nawias ostrokątny algorithm zamknij nawias ostrokątny. Linia 5. using namespace std średnik. Linia 7. bool czyAnagram otwórz nawias okrągły string slowo1 przecinek string slowo2 zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. if otwórz nawias okrągły slowo1 kropka length otwórz nawias okrągły zamknij nawias okrągły wykrzyknik znak równości slowo2 kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. return false średnik. Linia 10. zamknij nawias klamrowy. Linia 12. sort otwórz nawias okrągły slowo1 kropka begin otwórz nawias okrągły zamknij nawias okrągły przecinek slowo1 kropka end otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 13. sort otwórz nawias okrągły slowo2 kropka begin otwórz nawias okrągły zamknij nawias okrągły przecinek slowo2 kropka end otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 15. if otwórz nawias okrągły slowo1 znak równości znak równości slowo2 zamknij nawias okrągły otwórz nawias klamrowy. Linia 16. return true średnik. Linia 17. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 18. return false średnik. Linia 19. zamknij nawias klamrowy. Linia 20. zamknij nawias klamrowy. Linia 22. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 23. string slowo1 znak równości cudzysłów hiacynt cudzysłów średnik. Linia 24. string slowo2 znak równości cudzysłów chityna cudzysłów średnik. Linia 25. bool anagram znak równości czyAnagram otwórz nawias okrągły slowo1 przecinek slowo2 zamknij nawias okrągły średnik. Linia 27. if otwórz nawias okrągły anagram znak równości znak równości true zamknij nawias okrągły otwórz nawias klamrowy. Linia 28. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Podana para wyrazów to anagram cudzysłów średnik. Linia 29. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 30. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Podana para wyrazów nie jest anagramem cudzysłów średnik. Linia 31. zamknij nawias klamrowy. Linia 33. return 0 średnik. Linia 34. zamknij nawias klamrowy.

W programie zostało użytych kilka funkcji wbudowanych:

  • length() – należy do biblioteki <string> i zwraca liczbę znaków danego łańcucha, czyli jego długość. W programie używamy jej przy sprawdzeniu, czy podana para słów jest równej długości,

  • begin() – również należy do biblioteki <string> i jej wynikiem jest iterator, który znajduje się na samym początku stringa, na którym używamy danej funkcji,

  • end() – analogicznie do begin(), wskazuje na końcowy iterator stringa. Jak reszta, należy do biblioteki <string>.

  • sort() – należy do biblioteki <algorithm>. Przymuje dwa parametry: pierwszym jest początkowy iterator danej struktury, którą chcemy posortować, a drugim końcowy iterator tej samej struktury.

Słownik

sortowanie
sortowanie

uporządkowanie elementów danego zbioru według określonych kryteriów

tabela ASCII
tabela ASCII

przyporządkowuje liczbom z zakresu od 0 do 127 litery alfabetu łacińskiego, cyfry, znaki interpunkcyjne i inne symbole oraz polecenia sterujące; na przykład litera „a” jest kodowana jako liczba 97, a znak spacji jest kodowany jako 32