Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> // Biblioteka obsługi wejscia/wyjscia.
- #include <string> // Biblioteka obslugi tekstu.
- #include <fstream> // Biblioteka obslugi plikow.
- #include <conio.h> // Biblioteka do zatrzymania programu.
- #include <algorithm> // Biblioteka operacji na tekscie.
- using namespace std; // Biblioteka ulatwiacz pisania.
- class ConnotOpenFileException {}; // Klasa do reakcji na błędy.
- bool CzyPalindrom(string &sText) { // Funkcja sprawdza czy tekst sText jest Palidromem.
- for (unsigned int i = 0; i < (sText.length()/2); i++) // Dla kazdej litery w pierwszej polowie zdania sprawdz
- if (sText.at(i) != sText.at(sText.length()-1-i) ) return false; // czy na odpowiedniej pozycji na koncu jest taka sama
- return true; // jesli sa inne to zwroc falsz ,inaczej prawda.
- }
- void OdwrocZdanie(string &sText) { // Funkcja odwraca tekst sText.
- string *sBuffor = new string; // Bufor przechowujacy kopie tekstu.
- for (int i = (sText.length() - 1); i >= 0; i--) *sBuffor += sText.at(i); // Przenies litere na pozycji 'i' do bufora ,dekrementacja.
- sText = *sBuffor+"\n"; // Przenies bufor do oryginalne zmiennej (referencja).
- delete sBuffor; // Usuniecie bufora.
- }
- void removeFromStringAndToLower(string &sText, char* cToRemove) { // Funcja usowania cToRemove znakow i zmiany liter na male z sText.
- for (unsigned int i = 0; i < strlen(cToRemove); ++i) // Dla kazdego znaku do usuniecia.
- sText.erase(remove(sText.begin(), sText.end(), cToRemove[i]), sText.end()); // Skasowanie znakow .
- transform(sText.begin(), sText.end(), sText.begin(), tolower); // Zmiana tekstu na male liter.
- }
- void readFromFileAndConvert(string &sFileName, string sQuest) { // Odczytywanie pliku i wykonanie operacji na tekscie.
- fstream *fFile = new fstream; // /
- string *sResult = new string; // Alokacja pamieci zmiennych.
- string *sBuffor = new string; // /
- fFile->open(sFileName, fstream::in); // Otwieranie pliku w trybie do odczytu.
- if (!fFile->good()) throw ConnotOpenFileException(); // Obsluga wyjatku/bledu -wyrzucenie wyjatku.
- while (!fFile->eof()) { // Dopuki nie natrafiono na koniec pliku
- getline(*fFile, *sBuffor); // pobierz linie.
- if (sQuest == "Palidrom") { // Jesli szukamy Palidromu
- removeFromStringAndToLower(*sBuffor, " .,"); // usun znaki i zmien na male litery
- *sResult += (CzyPalindrom(*sBuffor) ? "1" : "0"); // sprawdz czy jest palidromem i dodaje do wyniku
- cout << *sResult->rbegin() << " - " << *sBuffor << endl; // wyswietla status zdania i zdanie
- *sResult += "\n"; // dodaje znak konca lini do wyniku.
- }else { // W przeciwnym wypadku
- OdwrocZdanie(*sBuffor); // odwraca zdanie
- cout << *sBuffor; // wyswietla je
- *sResult += *sBuffor; // dodaje je do wyniku.
- }
- }
- fFile->close(); // Zamykanie pliku.
- ofstream *fCreateFile = new ofstream; // Tworzenie zmiennej nowego pliku.
- fCreateFile->open(sQuest + "_" + sFileName); // Tworzenie nowego pliku z nazwa operacji i nazwa oryginalnego pliku.
- *fCreateFile << sResult; // Zapisywanie wyniku do pliku.
- fCreateFile->close(); // Zamykanie pliku wyniku.
- delete fCreateFile; // /
- delete sBuffor; // /
- delete fFile; // Usowanie zmiennych.
- delete sResult; // /
- }
- int main()
- {
- string *sFileName = new string; *sFileName = "Tekst.txt"; // Alokacja pamieci zmiennej | i domyslna nazwa (zakometowac i pobrac wlasna 'cin').
- try{ // Obsluga bledu otwierania pliku.
- readFromFileAndConvert(*sFileName, "Palidrom"); // Wyszukiwanie Palidromu.
- cout << endl; // Odstep miedzy operacjami.
- readFromFileAndConvert(*sFileName, "Filip"); // Odwracanie tekstu.
- }catch (ConnotOpenFileException) { // Jesli zostal wyrzucony wyjatek w bloku try.
- cout << "Blad otwarcia pliku " + *sFileName << endl; // Wypisz.
- _getch(); // Zaczekaj.
- delete sFileName; // Usun zmienna.
- return 1; // Zakoncz program z wartoscia 1
- }
- // Jesli nie zostal wyrzucony wyjatek.
- _getch(); // Zaczekaj
- delete sFileName; // Usun zmienna.
- return 0; // Zakoncz program z wartoscia 0.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement