Advertisement
Alan468

Palidrom i odwracanie tekstu

Mar 1st, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.95 KB | None | 0 0
  1. #include <iostream> // Biblioteka obsługi wejscia/wyjscia.
  2. #include <string> // Biblioteka obslugi tekstu.
  3. #include <fstream> // Biblioteka obslugi plikow.
  4. #include <conio.h> // Biblioteka do zatrzymania programu.
  5. #include <algorithm> // Biblioteka operacji na tekscie.
  6.  
  7. using namespace std; // Biblioteka ulatwiacz pisania.
  8.  
  9. class ConnotOpenFileException {}; // Klasa do reakcji na błędy.
  10.  
  11. bool CzyPalindrom(string &sText) { // Funkcja sprawdza czy tekst sText jest Palidromem.
  12.     for (unsigned int i = 0; i < (sText.length()/2); i++) // Dla kazdej litery w pierwszej polowie zdania sprawdz
  13.         if (sText.at(i) != sText.at(sText.length()-1-i) ) return false; // czy na odpowiedniej pozycji na koncu jest taka sama
  14.     return true; // jesli sa inne to zwroc falsz ,inaczej prawda.
  15. }
  16.  
  17. void OdwrocZdanie(string &sText) { // Funkcja odwraca tekst sText.
  18.     string *sBuffor = new string; // Bufor przechowujacy kopie tekstu.
  19.     for (int i = (sText.length() - 1); i >= 0; i--) *sBuffor += sText.at(i); // Przenies litere na pozycji 'i' do bufora ,dekrementacja.
  20.     sText = *sBuffor+"\n"; // Przenies bufor do oryginalne zmiennej (referencja).
  21.     delete sBuffor; // Usuniecie bufora.
  22. }
  23.  
  24. void removeFromStringAndToLower(string &sText, char* cToRemove) { // Funcja usowania cToRemove znakow i zmiany liter na male z sText.
  25.     for (unsigned int i = 0; i < strlen(cToRemove); ++i) // Dla kazdego znaku do usuniecia.
  26.         sText.erase(remove(sText.begin(), sText.end(), cToRemove[i]), sText.end()); // Skasowanie znakow .
  27.     transform(sText.begin(), sText.end(), sText.begin(), tolower); // Zmiana tekstu na male liter.
  28. }
  29.  
  30. void readFromFileAndConvert(string &sFileName, string sQuest) { // Odczytywanie pliku i wykonanie operacji na tekscie.
  31.     fstream *fFile = new fstream; // /
  32.     string *sResult = new string; // Alokacja pamieci zmiennych.
  33.     string *sBuffor = new string; // /
  34.  
  35.     fFile->open(sFileName, fstream::in); // Otwieranie pliku w trybie do odczytu.
  36.     if (!fFile->good()) throw ConnotOpenFileException(); // Obsluga wyjatku/bledu  -wyrzucenie wyjatku.
  37.  
  38.     while (!fFile->eof()) { // Dopuki nie natrafiono na koniec pliku
  39.         getline(*fFile, *sBuffor); // pobierz linie.
  40.  
  41.         if (sQuest == "Palidrom") { // Jesli szukamy Palidromu
  42.             removeFromStringAndToLower(*sBuffor, " .,"); // usun znaki i zmien na male litery
  43.             *sResult += (CzyPalindrom(*sBuffor) ? "1" : "0"); // sprawdz czy jest palidromem i dodaje do wyniku
  44.             cout << *sResult->rbegin() << " - " << *sBuffor << endl; // wyswietla status zdania i zdanie
  45.             *sResult += "\n"; // dodaje znak konca lini do wyniku.
  46.         }else { // W przeciwnym wypadku
  47.             OdwrocZdanie(*sBuffor); // odwraca zdanie
  48.             cout << *sBuffor; // wyswietla je
  49.             *sResult += *sBuffor; // dodaje je do wyniku.
  50.         }
  51.     }
  52.     fFile->close(); // Zamykanie pliku.
  53.  
  54.     ofstream *fCreateFile = new ofstream; // Tworzenie zmiennej nowego pliku.
  55.     fCreateFile->open(sQuest + "_" + sFileName); // Tworzenie nowego pliku z nazwa operacji i nazwa oryginalnego pliku.
  56.  
  57.     *fCreateFile << sResult; // Zapisywanie wyniku do pliku.
  58.    
  59.     fCreateFile->close(); // Zamykanie pliku wyniku.
  60.     delete fCreateFile; // /
  61.     delete sBuffor; // /
  62.     delete fFile; // Usowanie zmiennych.
  63.     delete sResult; // /
  64. }
  65.  
  66. int main()
  67. {
  68.     string *sFileName = new string; *sFileName = "Tekst.txt"; // Alokacja pamieci zmiennej | i domyslna nazwa (zakometowac i pobrac wlasna 'cin').
  69.  
  70.     try{ // Obsluga bledu otwierania pliku.
  71.         readFromFileAndConvert(*sFileName, "Palidrom"); // Wyszukiwanie Palidromu.
  72.         cout << endl; // Odstep miedzy operacjami.
  73.         readFromFileAndConvert(*sFileName, "Filip"); // Odwracanie tekstu.
  74.     }catch (ConnotOpenFileException) { // Jesli zostal wyrzucony wyjatek w bloku try.
  75.         cout << "Blad otwarcia pliku " + *sFileName << endl; // Wypisz.
  76.         _getch(); // Zaczekaj.
  77.         delete sFileName; // Usun zmienna.
  78.         return 1; // Zakoncz program z wartoscia 1
  79.     }
  80.     // Jesli nie zostal wyrzucony wyjatek.
  81.     _getch(); // Zaczekaj
  82.     delete sFileName; // Usun zmienna.
  83.     return 0; // Zakoncz program z wartoscia 0.
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement