Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Dwa wyrazy waza tyle samo, jezeli: maja te sama liczbe samoglosek oraz sumy
- // kodow ASCII liter, z ktorych sa zbudowane sa identyczne, na przyklad:
- // ula -> 117 + 108 + 97, exe -> 101 + 120 + 101.
- // Prosze napisac funkcje, ktora sprawdza czy dla dwoch podanych wyrazow jest
- // mozliwe zbudowanie wyrazu z podzbioru liter zawartych w drugim slowie, tak
- // aby wazyl on tyle samo co pierwszy wyraz. Dodatkowo funkcja powinna wypisac
- // znaleziony wyraz.
- #include <iostream>
- using namespace std;
- int sumuj_slowo(const char *slowo) {
- int i = 0;
- int suma = 0;
- while (slowo[i] != 0) {
- suma += slowo[i];
- i++;
- }
- return suma;
- }
- int policz_samogloski(const char *slowo) {
- int i = 0;
- int ilosc = 0;
- while (slowo[i] != 0) {
- if (slowo[i] == 'a'
- || slowo[i] == 'e'
- || slowo[i] == 'i'
- || slowo[i] == 'o'
- || slowo[i] == 'u'
- || slowo[i] == 'y') {
- ilosc++;
- }
- i++;
- }
- return ilosc;
- }
- bool czy_waza_tyle_samo(const char *a, const char *b) {
- return sumuj_slowo(a) == sumuj_slowo(b)
- && policz_samogloski(a) == policz_samogloski(b);
- }
- bool porownaj(
- const char *slowo,
- const char *drugie_slowo,
- string podzbiorowe_slowo,
- int p) {
- if (czy_waza_tyle_samo(slowo, podzbiorowe_slowo.c_str())) {
- cout << podzbiorowe_slowo << endl;
- return true;
- }
- if (drugie_slowo[p] == 0) {
- return false;
- }
- return porownaj(slowo, drugie_slowo, podzbiorowe_slowo + drugie_slowo[p], p + 1)
- || porownaj(slowo, drugie_slowo, podzbiorowe_slowo, p + 1);
- return false;
- }
- bool zadanie(const char *slowo, const char *drugie_slowo) {
- return porownaj(slowo, drugie_slowo, "", 0);
- }
- int main() {
- cout << zadanie("ula", "abcdefex") << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement