Ćwiczenie 0

Aby stworzyć program, którego wynikiem będzie dany napis z pominiętymi literami, np. a, trzeba przeanalizować napis znak po znaku za pomocą pętli for. Do zmiennej będącej wynikiem, której wartość początkowa jest pustym napisem, należy dodać tylko znaki niebędące literą a. Przeanalizuj zapis, a następnie zmodyfikuj kod tak, aby otrzymać napis z pominiętymi spacjami.

#include <iostream> using namespace std; string pomin(string napis) { string pom = ""; for (int i = 0; i < napis.size(); i++) if (napis[i] != 'a') pom = pom + napis[i]; return pom; } int main() { cout << pomin("agama brodata") << endl; cout << pomin("papuga") << endl; cout << pomin("delfin butelkonosy") << endl; cout << pomin("salamandra czerwona z licznymi plamkami") << endl; return 0; }
Wynikiem funkcji pomin("lampart") jest lampart
return pomin("lampart")=="lampart";
lampart
pomin("lampart")
Wynikiem funkcji pomin(" g e p a r d ") jest gepard
return pomin(" g e p a r d ")=="gepard";
gepard
pomin(" g e p a r d ")
Wynikiem funkcji pomin("za skro niec ") jest zaskroniec
return pomin("za skro niec ")=="zaskroniec";
zaskroniec
pomin("za skro niec ")
Rozwiąż ćwiczenie

Ćwiczenie 1Przestawianie parami

Zdefiniuj funkcję szyfr(string s), której parametrem jest tekst jawny składający się z małych liter alfabetu łacińskiego i pojedynczych spacji, a wy­nikiem – szyfrogram utworzony przez przestawienie kolejnych par znaków, przy czym spacja traktowana jest jak każda inna litera i również podlega zamianie.

Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji szyfr("kotwica") jest okwtcia.
  • Wynikiem funkcji szyfr("szyfrowanie jest trudne") jest zsfyorawin eejtst urnde.
#include <iostream> using namespace std; // zdefiniuj funkcję string szyfr(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji szyfr(" pierwsza") jest p eiwrzsa
return szyfr(" pierwsza")=="p eiwrzsa";
p eiwrzsa
szyfr(" pierwsza")
Wynikiem funkcji szyfr("ostatnia ") jest soatntai
return szyfr("ostatnia ")=="soatntai ";
soatntai
szyfr("ostatnia ")
Wynikiem funkcji szyfr("w") jest w
return szyfr("w")=="w";
w
szyfr("w")
Rozwiąż ćwiczenie

Ćwiczenie 2Parkan

Zdefiniuj funkcję parkan(string s), której parametrem jest tekst jawny złożony z małych liter alfabetu łacińskiego, a wynikiem – szyfrogram utwo­rzony za pomocą szyfru parkan. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji parkan("fronty") jest fotrny.
  • Wynikiem funkcji parkan("tajne") jest tjean.
#include <iostream> using namespace std; // zdefiniuj funkcję string parkan(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji parkan("abba") jest ciąg znaków abba
return parkan("abba")=="abba";
abba
parkan("abba")
Wynikiem funkcji parkan("k") jest k
return parkan("k")=="k";
k
parkan("k")
Wynikiem funkcji parkan("kkllaassaa") jest klasaklasa
return parkan("kkllaassaa")=="klasaklasa";
klasaklasa
parkan("kkllaassaa")
Rozwiąż ćwiczenie

Ćwiczenie 3Czy to jest palindrom

Zdefiniuj funkcję logiczną czy_palindrom(string s), której pa­rametrem jest napis zawierający tylko małe litery alfabetu łacińskiego, a wynikiem: wartość logiczna 1 (prawda), gdy napis jest palindromem, lub 0 (fałsz), gdy nim nie jest. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji czy_palindrom("aabbaa") jest 1.
  • Wynikiem funkcji czy_palindrom("aaxyaa") jest 0.
#include <iostream> using namespace std; // zdefiniuj funkcję bool czy_palindrom(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji czy_palindrom("p") jest 1
return czy_palindrom("p")==1;
1
czy_palindrom("p")
Wynikiem funkcji czy_palindrom("prawda") jest 0
return czy_palindrom("prawda")==0;
0
czy_palindrom("prawda")
Wynikiem funkcji czy_palindrom("abcddcba") jest 1
return czy_palindrom("abcddcba")==1;
1
czy_palindrom("abcddcba")
Rozwiąż ćwiczenie

Ćwiczenie 4Czy zdanie jest palindromem

Zdefiniuj funkcję logiczną czy_palindrom2(string s), której pa­rametrem jest napis zawierający małe litery alfabetu łacińskiego i spacje, a wynikiem wartość logiczna 1 (prawda), gdy napis jest palindromem, lub 0 (fałsz), gdy nim nie jest. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji czy_palindrom2("a to kanapa pana kota") jest 1.
  • Wynikiem funkcji czy_palindrom2("a to kanapka pana kota") jest 0.
#include <iostream> using namespace std; // zdefiniuj funkcję bool czy_palindrom(string s) { } // zdefiniuj funkcję string pomin(string s) { } // zdefiniuj funkcję bool czy_palindrom2(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji czy_palindrom2("tolo ma samolot) jest 1
return czy_palindrom2("tolo ma samolot")==1;
1
czy_palindrom2("tolo ma samolot")
Wynikiem funkcji czy_palindrom2("tolo da samolot") jest 0
return czy_palindrom2("tolo da samolot")==0;
0
czy_palindrom2("tolo da samolot")
Wynikiem funkcji czy_palindrom2("atak na kata") jest 0
return czy_palindrom2("atak na kata")==0;
0
czy_palindrom2("atak na kata")
Wynikiem funkcji czy_palindrom2("atak w kata") jest 1
return czy_palindrom2("atak w kata")==1;
1
czy_palindrom2("atak w kata")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zdefiniuj funkcję zastap(string napis), której wynikiem jest napis ze spacjami zastąpionymi przez znak podkreślenia (_). Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zastap("podgrzybek brunatny") jest podgrzybek_brunatny.
  • Wynikiem funkcji zastap(" rydz mleczaj ") jest _rydz_mleczaj_.
#include <iostream> using namespace std; // zdefiniuj funkcję string zastap(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji zastap("boro wik") jest boro__wik
return zastap("boro wik")=="boro__wik";
boro__wik
zastap("boro wik")
Wynikiem funkcji zastap(" t r u f l a ") jest _t_r_u_f_l_a_
return zastap(" t r u f l a ")=="_t_r_u_f_l_a_";
_t_r_u_f_l_a_
zastap(" t r u f l a ")
Wynikiem funkcji zastap("rydz i kania") jest rydz_i_kania
return zastap("rydz i kania")=="rydz_i_kania";
rydz_i_kania
zastap("rydz i kania")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Napisz funkcję zamien(string napis), której parametrem jest napis o parzystej liczbie znaków, a wynikiem – ten sam napis z pozamienianymi sąsiednimi znakami (tj. pierwszy z drugim, trzeci z czwartym itd.). Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zamien("agrest") jest gaerts.
  • Wynikiem funkcji zamien("mandarynka") jest amdnranyak.
#include <iostream> using namespace std; // zdefiniuj funkcję string zamien(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji zamien("jagoda") jest ajogad
return zamien("jagoda")=="ajogad";
ajogad
zamien("jagoda")
Wynikiem funkcji zamien("nektarynka") jest entkranyak
return zamien("nektarynka")=="entkranyak";
entkranyak
zamien("nektarynka")
Wynikiem funkcji zamien("ananas") jest nanasa
return zamien("ananas")=="nanasa";
nanasa
zamien("ananas")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 3

Zdefiniuj funkcję zmiana(string napis), której wynikiem jest napis z pozamienianymi literami a na o i odwrotnie: o na a. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zmiana("brzoskwinia") jest brzaskwinio.
  • Wynikiem funkcji zmiana("morela") jest marelo.
#include <iostream> using namespace std; // zdefiniuj funkcję string zmiana(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji zmiana("brzoza") jest brzazo
return zmiana("brzoza")=="brzazo";
brzazo
zmiana("brzoza")
Wynikiem funkcji zmiana("topola") jest tapalo
return zmiana("topola")=="tapalo";
tapalo
zmiana("topola")
Wynikiem funkcji zmiana("modrzew i sosna") jest madrzew i sasno
return zmiana("modrzew i sosna")=="madrzew i sasno";
madrzew i sasno
zmiana("modrzew i sosna")
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 4

Zdefiniuj funkcję cykl(string napis), której wynikiem jest napis pozamienianymi samogłoskami a na e, e na i, i na o, o na u, u na y i y na a. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji cykl("czarne jagody") jest czerni jeguda.
  • Wynikiem funkcji cykl("poziomki") jest puzoumko.
#include <iostream> using namespace std; // zdefiniuj funkcję string cykl(string napis) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji cykl("guawa") jest gyewe
return cykl("guawa")=="gyewe";
gyewe
cykl("guawa")
Wynikiem funkcji cykl("jagody goji") jest jeguda gujo
return cykl("jagody goji")=="jeguda gujo";
jeguda gujo
cykl("jagody goji")
Wynikiem funkcji cykl("cytryny") jest catrana
return cykl("cytryny")=="catrana";
catrana
cykl("cytryny")
Rozwiąż ćwiczenie

Zadanie 1Ukrywanie tekstu

Zdefiniuj funkcję ukryj(string s), której parametrem jest napis złożony z małych liter alfabetu łacińskiego, a wynikiem – napis z wstawioną co drugą literą wybraną losowo. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ukryj("zima") jest np. zkitmwau.
  • Wynikiem funkcji ukryj("alamakota") jest np. axldaamaackvostvac.

Wskazówka: do losowania wykorzystaj funkcje rand() i srand().

#include <iostream> using namespace std; // zdefiniuj funkcję string ukryj(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Rozwiąż ćwiczenie

Zadanie 2ROT13

Zapoznaj się z informacją na temat szyfru ROT13 na s. 199 podręcznika, a następnie zdefiniuj funkcję rot(string s), której parametrem jest napis zawierający wielkie litery alfabetu łacińskiego, a wynikiem – napis zakodowany według podanej zasady. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji rot("GRAT") jest TENG.
  • Wynikiem funkcji rot("INFORMACJA") jest VASBEZNPWN.
#include <iostream> using namespace std; // zdefiniuj funkcję string rot(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji rot("NOPQRSTUVWXYZ") jest ciąg znaków ABCDEFGHIJKLM
return rot("NOPQRSTUVWXYZ")=="ABCDEFGHIJKLM";
ABCDEFGHIJKLM
rot("NOPQRSTUVWXYZ")
Wynikiem funkcji rot("ADEZAW") jest ciąg znaków NQRMNJ
return rot("ADEZAW")=="NQRMNJ";
NQRMNJ
rot("ADEZAW")
Wynikiem funkcji rot("INFORMATYKA") jest ciąg znaków VASBEZNGLXN
return rot("INFORMATYKA")=="VASBEZNGLXN";
VASBEZNGLXN
rot("INFORMATYKA")
Rozwiąż ćwiczenie

Zadanie 3Anagram

Zdefiniuj funkcję anagram(string s), której parametrem jest tekst jawny składający się z małych liter a, b lub c, a wynikiem  napis, w którym wszystkie litery tekstu ustawione są w kolejności alfabetycznej. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji anagram("acabbca") jest aaabbcc.
  • Wynikiem funkcji anagram("abccbaaaa") jest aaaaabbcc.
#include <iostream> using namespace std; // zdefiniuj funkcję string anagram(string s) { } int main() { // sprawdź działanie funkcji return 0; }
Wynikiem funkcji anagram("accaccaaaa") jest ciąg znaków aaaaaacccc
return anagram("accaccaaaa")=="aaaaaacccc";
aaaaaacccc
anagram("accaccaaaa")
Wynikiem funkcji anagram("bbbbbbbbbbbbb") jest ciąg znaków bbbbbbbbbbbbb
return anagram("bbbbbbbbbbbbb")=="bbbbbbbbbbbbb";
bbbbbbbbbbbbb
anagram("bbbbbbbbbbbbb")
Wynikiem funkcji anagram("bbaaaccbaaaba") jest ciąg znaków aaaaaaabbbbcc
return anagram("bbaaaccbaaaba")=="aaaaaaabbbbcc";
aaaaaaabbbbcc
anagram("bbaaaccbaaaba")
Rozwiąż ćwiczenie

Pytania quizowePrzetwarzanie napisów

Twój wynik to: /3
  • Jaki znak zostanie wypisany dla napisu w = "szyfrant" w wyniku działania polecenia cout << w[w.size() - 8] << endl;?
  • Jak należy zacząć jednowierszowy komentarz?
  • Przeglądanie napisu co 1 znak można zrealizować za pomocą następującej pętli: