Advertisement
Guest User

Waga ASCII

a guest
Dec 10th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. // Dwa wyrazy waza tyle samo, jezeli: maja te sama liczbe samoglosek oraz sumy
  2. // kodow ASCII liter, z ktorych sa zbudowane sa identyczne, na przyklad:
  3. // ula -> 117 + 108 + 97, exe -> 101 + 120 + 101.
  4. // Prosze napisac funkcje, ktora sprawdza czy dla dwoch podanych wyrazow jest
  5. // mozliwe zbudowanie wyrazu z podzbioru liter zawartych w drugim slowie, tak
  6. // aby wazyl on tyle samo co pierwszy wyraz. Dodatkowo funkcja powinna wypisac
  7. // znaleziony wyraz.
  8.  
  9. #include <iostream>
  10. using namespace std;
  11.  
  12. int sumuj_slowo(const char *slowo) {
  13.     int i = 0;
  14.     int suma = 0;
  15.     while (slowo[i] != 0) {
  16.         suma += slowo[i];
  17.         i++;
  18.     }
  19.     return suma;
  20. }
  21.  
  22. int policz_samogloski(const char *slowo) {
  23.     int i = 0;
  24.     int ilosc = 0;
  25.     while (slowo[i] != 0) {
  26.         if (slowo[i] == 'a'
  27.             || slowo[i] == 'e'
  28.             || slowo[i] == 'i'
  29.             || slowo[i] == 'o'
  30.             || slowo[i] == 'u'
  31.             || slowo[i] == 'y') {
  32.             ilosc++;
  33.         }
  34.         i++;
  35.     }
  36.     return ilosc;
  37. }
  38.  
  39. bool czy_waza_tyle_samo(const char *a, const char *b) {
  40.     return sumuj_slowo(a) == sumuj_slowo(b)
  41.     && policz_samogloski(a) == policz_samogloski(b);
  42. }
  43.  
  44. bool porownaj(
  45.     const char *slowo,
  46.     const char *drugie_slowo,
  47.     string podzbiorowe_slowo,
  48.     int p) {
  49.  
  50.     if (czy_waza_tyle_samo(slowo, podzbiorowe_slowo.c_str())) {
  51.         cout << podzbiorowe_slowo << endl;
  52.         return true;
  53.     }
  54.  
  55.     if (drugie_slowo[p] == 0) {
  56.         return false;
  57.     }
  58.  
  59.     return porownaj(slowo, drugie_slowo, podzbiorowe_slowo + drugie_slowo[p], p + 1)
  60.         || porownaj(slowo, drugie_slowo, podzbiorowe_slowo, p + 1);
  61.  
  62.     return false;
  63. }
  64.  
  65. bool zadanie(const char *slowo, const char *drugie_slowo) {
  66.     return porownaj(slowo, drugie_slowo, "", 0);
  67. }
  68.  
  69. int main() {
  70.     cout << zadanie("ula", "abcdefex") << endl;
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement