Rozpatrzmy grę w łańcuch słów: każdy z graczy na przemian mówi jedno słowo. Musi ono rozpoczynać się literą, którą kończyło się poprzednie słowo: jeśli pierwszy gracz powie „lokomotywa”, drugi może powiedzieć np. „arbuz”. Napisz program, który zasymuluje działanie drugiego gracza – dla podanego słowa znajdzie (w tablicy znanych słów) słowo zaczynające się jego ostatnią literą. Działanie programu przetestuj dla słów „wiadro” i „rebus”. Przyjmij jako znaną listę słów:
znaneSlowa – słowa, w których program będzie mógł szukać odpowiedzi; tablica łańcuchów znaków
wprowadzone przez pierwszego gracza słowa, dla których program będzie mógł szukać odpowiedzi
Wynik:
Program na standardowym wyjściu wypisuje słowo zaczynające się ostatnią literą wprowadzonego słowa, jeśli znajdzie takie w tablicy znaneSlowa, lub „PRZEGRALEM”, jeśli nie znajdzie odpowiedniego słowa.
RMqLWmTzikT6x
Przykładowe rozwiązanie zadania
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 4. using namespace std średnik.
Linia 6. string lancuchSlow otwórz nawias okrągły string slowo zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. string znaneSlowa otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy cudzysłów arbuz cudzysłów przecinek cudzysłów lokomotywa cudzysłów przecinek cudzysłów wiatrak cudzysłów przecinek cudzysłów krowa cudzysłów przecinek cudzysłów mleko cudzysłów przecinek cudzysłów ananas cudzysłów przecinek cudzysłów osada cudzysłów przecinek cudzysłów krab cudzysłów zamknij nawias klamrowy średnik.
Linia 9. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 8 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. if otwórz nawias okrągły slowo otwórz nawias kwadratowy slowo kropka length otwórz nawias okrągły zamknij nawias okrągły minus 1 zamknij nawias kwadratowy znak równości znak równości znaneSlowa otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 11. return znaneSlowa otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 12. zamknij nawias klamrowy.
Linia 13. zamknij nawias klamrowy.
Linia 14. return cudzysłów PRZEGRALEM cudzysłów średnik.
Linia 15. zamknij nawias klamrowy.
Linia 17. int main otwórz nawias okrągły zamknij nawias okrągły.
Linia 18. otwórz nawias klamrowy.
Linia 19. cout otwórz nawias ostrokątny otwórz nawias ostrokątny lancuchSlow otwórz nawias okrągły cudzysłów wiadro cudzysłów zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 20. cout otwórz nawias ostrokątny otwórz nawias ostrokątny lancuchSlow otwórz nawias okrągły cudzysłów rebus cudzysłów zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 22. return 0 średnik.
Linia 23. zamknij nawias klamrowy.
21
Ćwiczenie 2
Napisz program sprawdzający dla gry, w której uczestnicy układają słowa z liter tworzących inne słowo. Funkcja sprawdzająca ma przyjmować dwa słowa. Jeśli pierwsze z nich składa się tylko i wyłącznie z liter tworzących drugie słowo, funkcja powinna zwracać true, zaś w przeciwnym wypadku false. Działanie programu przetestuj dla par słów: „motyka” i „lokomotywa”; „loki” i „lokomotywa”; „wakat” i „lokomotywa”.
Specyfikacja:
Dane:
slowo – słowo, którego litery będą sprawdzane; łańcuch znaków
slowoBazowe – słowo, z którego liter powinno składać się slowo; łańcuch znaków
Wynik:
Program na standardowym wyjściu wyświetli 1, jeśli pierwsze słowo będzie składało się tylko z liter drugiego, lub w przeciwnym wypadku wyświetli 0.
RQOjv9DHyQsv6
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. bool sprawdz otwórz nawias okrągły string slowo przecinek string slowoBazowe zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. int licznikLiterWSlowie otwórz nawias kwadratowy 26 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 0 zamknij nawias klamrowy średnik.
Linia 7. int licznikLiterWSlowieBazowym otwórz nawias kwadratowy 26 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 0 zamknij nawias klamrowy średnik.
Linia 9. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny slowo kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. licznikLiterWSlowie otwórz nawias kwadratowy slowo otwórz nawias kwadratowy i zamknij nawias kwadratowy minus apostrof a apostrof zamknij nawias kwadratowy plus plus średnik.
Linia 11. zamknij nawias klamrowy.
Linia 12. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny slowoBazowe kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 13. licznikLiterWSlowieBazowym otwórz nawias kwadratowy slowoBazowe otwórz nawias kwadratowy i zamknij nawias kwadratowy minus apostrof a apostrof zamknij nawias kwadratowy plus plus średnik.
Linia 14. zamknij nawias klamrowy.
Linia 16. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 26 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. if otwórz nawias okrągły licznikLiterWSlowie otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości 0 ampersant ampersant licznikLiterWSlowie otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny licznikLiterWSlowieBazowym otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. return false średnik.
Linia 19. zamknij nawias klamrowy.
Linia 20. zamknij nawias klamrowy.
Linia 21. return true średnik.
Linia 23. zamknij nawias klamrowy.
Linia 25. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 26. cout otwórz nawias ostrokątny otwórz nawias ostrokątny sprawdz otwórz nawias okrągły cudzysłów motyka cudzysłów przecinek cudzysłów lokomotywa cudzysłów zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 27. cout otwórz nawias ostrokątny otwórz nawias ostrokątny sprawdz otwórz nawias okrągły cudzysłów loki cudzysłów przecinek cudzysłów lokomotywa cudzysłów zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 28. cout otwórz nawias ostrokątny otwórz nawias ostrokątny sprawdz otwórz nawias okrągły cudzysłów wakat cudzysłów przecinek cudzysłów lokomotywa cudzysłów zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 29. return 0 średnik.
Linia 30. zamknij nawias klamrowy.
31
Ćwiczenie 3
Przeprowadzana jest gra w „wisielca” – gracz próbuje odgadnąć słowo, którego litery są niewidoczne. Aby tego dokonać, może wybrać literę, która zostanie odsłonięta. Jeśli litera nie występuje w danym słowie, gracz traci jeden punkt życia. Dany jest algorytm, który gra w „wisielca” według następujących zasad:
Pierwsza sprawdzana litera to 'A' (pozycja w alfabecie 0).
Jeżeli sprawdzana litera, której pozycja w alfabecie to , występuje w słowie razy, następną sprawdzaną literą będzie litera na pozycji .
Jeśli dana litera nie występuje w słowie, sprawdzana jest litera na pozycji .
Jeżeli pozycja kolejnej litery przekracza zakres alfabetu ('Z' występuje na pozycji 25), wykonujemy dzielenie aktualnej pozycji.
W przypadku natrafienia na już sprawdzoną literę, nie sprawdzamy jej ponownie, a następną sprawdzaną literą będzie litera na pozycji .
Działanie algorytmu przetestuj dla podanej tablicy:
slowa – słowa do odgadnięcia przez program; tablica łańcuchów znaków
Wynik:
Program wypisuje na standardowym wyjściu liczbę odgadniętych słów.
Ri16vlSkm7Hj6
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 4. using namespace std średnik.
Linia 6. int ileRazyWystepuje otwórz nawias okrągły char a przecinek string slowo zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. int ilosc znak równości 0 średnik.
Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny slowo kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. ilosc plus znak równości otwórz nawias okrągły slowo otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości a zamknij nawias okrągły średnik.
Linia 10. zamknij nawias klamrowy.
Linia 11. return ilosc średnik.
Linia 12. zamknij nawias klamrowy.
Linia 14. bool symulacja otwórz nawias okrągły string slowo przecinek int punktyZycia zamknij nawias okrągły otwórz nawias klamrowy.
Linia 15. int pozycja znak równości 0 przecinek odgadnietychZnakow znak równości 0 średnik.
Linia 16. bool wykorzystane otwórz nawias kwadratowy 26 zamknij nawias kwadratowy średnik.
Linia 17. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 26 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. wykorzystane otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości false średnik.
Linia 19. zamknij nawias klamrowy.
Linia 21. while otwórz nawias okrągły punktyZycia zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. if otwórz nawias okrągły wykorzystane otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 23. pozycja plus plus średnik.
Linia 24. else otwórz nawias klamrowy.
Linia 25. wykorzystane otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości true średnik.
Linia 26. int wystapienia znak równości ileRazyWystepuje otwórz nawias okrągły apostrof A apostrof plus pozycja przecinek slowo zamknij nawias okrągły średnik.
Linia 28. if otwórz nawias okrągły wystapienia znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 29. punktyZycia minus minus średnik.
Linia 30. pozycja plus plus średnik.
Linia 31. zamknij nawias klamrowy.
Linia 32. else otwórz nawias klamrowy.
Linia 33. pozycja znak równości pozycja asterysk 2 plus wystapienia średnik.
Linia 34. odgadnietychZnakow plus znak równości wystapienia średnik.
Linia 35. zamknij nawias klamrowy.
Linia 36. zamknij nawias klamrowy.
Linia 38. if otwórz nawias okrągły odgadnietychZnakow znak równości znak równości slowo kropka length otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 39. return true średnik.
Linia 40. zamknij nawias klamrowy.
Linia 41. pozycja procent znak równości 26 średnik.
Linia 42. zamknij nawias klamrowy.
Linia 44. return false średnik.
Linia 45. zamknij nawias klamrowy.
Linia 47. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 48. string slowa otwórz nawias kwadratowy 5 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy.
Linia 49. cudzysłów MAMA cudzysłów przecinek.
Linia 50. cudzysłów MATURA cudzysłów przecinek.
Linia 51. cudzysłów SZKOLA cudzysłów przecinek.
Linia 52. cudzysłów ALGORYTM cudzysłów przecinek.
Linia 53. cudzysłów INFORMATYKA cudzysłów.
Linia 54. zamknij nawias klamrowy średnik.
Linia 56. int ilosc znak równości 0 średnik.
Linia 57. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 5 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 58. ilosc plus znak równości symulacja otwórz nawias okrągły slowa otwórz nawias kwadratowy i zamknij nawias kwadratowy przecinek 16 zamknij nawias okrągły średnik.
Linia 59. zamknij nawias klamrowy.
Linia 61. cout otwórz nawias ostrokątny otwórz nawias ostrokątny ilosc otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 63. return 0 średnik.
Linia 64. zamknij nawias klamrowy.