Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <string>
- #include <cctype>
- #include <string>
- using namespace std;
- void przestaw(char& v1, char& v2); //Zamienia miejscami wartości v1 i v2.
- string od_tylu(const string& s); //Zwraca kopię łańcucha s ze znakami w odwróconej kolejności.
- string usun_interpunkcje(const string& s, const string& znaki_interpunkcyjne);
- // Zwraca kopię łańcucha s, w której usunięte są wszystkie
- // wystąpienia znaków interpunkcyjnych, jakie zostały podane w łańcuchu
- //znaki_interpunkcyjne.
- string na_male_litery(const string& s);
- // Zwraca kopię łańcucha, w której wszystkie wielkie litery zostały
- // zmienione na małe,
- // a małe litery pozostawione bez zmian.
- bool jest_palindromem(const string& s);
- //Zwraca wartość true, jeśli łańcuch s jest palindromem; wartość false w przeciwnym przypadku.
- int _tmain(int argc, _TCHAR* argv[])
- {
- string str;
- cout << "Wpisz tekst i nacisnij klawisz [Enter]\n";
- getline(cin, str);
- if (jest_palindromem(str))
- cout << "\"" << str + "\" jest palindromem.";
- else
- cout << "\"" << str << "\" nie jest palindromem.";
- cout << endl;
- getchar();
- return 0;
- }
- void przestaw(char& v1, char& v2) {
- char pom = v1; v1 = v2; v2 = pom;
- }
- string od_tylu(const string& s) {
- int poczatek = 0;
- int koniec = s.length( );
- string pom(s);
- while (poczatek < koniec)
- {
- koniec--;
- przestaw(pom[poczatek], pom[koniec]);
- poczatek++;
- }
- return pom;
- }
- string usun_interpunkcje(const string& s, const string& znaki_interpunkcyjne) {
- string bez_inter; //początkowo jest pusty
- int dlugosc_s = s.length( );
- int dlugosc_inter = znaki_interpunkcyjne.length( );
- for (int i = 0; i < dlugosc_s; i++)
- {
- string znak = s.substr(i, 1); //jednoznakowy
- int ind_zn_inter = znaki_interpunkcyjne.find(znak, 0);
- //Liczba ind_zn_inter określa położenie każdego kolejnego znaku
- //pobranego z łańcucha s w łańcuchu znaki_interpunkcyjne.
- if (ind_zn_inter < 0 || ind_zn_inter >= dlugosc_inter)
- {
- bez_inter = bez_inter + znak;
- }
- }
- return bez_inter;
- }
- //Korzysta z funkcji na_male_litery i usun_interpunkcje:
- bool jest_palindromem(const string& s) {
- string znaki_interpunkcyjne(",;:.?!'\" "); // znaki interpunkcyjne
- string str(s);
- str = na_male_litery(str);
- string str_malymi = usun_interpunkcje(str, znaki_interpunkcyjne);
- return (str_malymi == od_tylu(str_malymi));
- }
- string na_male_litery(const string& s) {
- string pom(s);
- for (int i = 0; i < s.length( ); i++)
- pom[i] = tolower(s[i]);
- return pom;
- }
Advertisement
Add Comment
Please, Sign In to add comment