//*************************************************************************
// PROGRAM WYSZUKUJE PALINDROMY W PLIKU
// - palindrom to taki wyraz ze czytany od przodu i od tylu jest jednakowy
// np. anna, kajak, potop,
// - wczytuje pierwszy wyraz z pliku
// - w petli for sprawdza ostatnia litere z pierwsza, przedostatnia z druga itd
// - gdy litery takie same to jest palindrom
// - zapisuje wynik, czyli wyszukane palindromy, do pliku palindrom.txt
//*************************************************************************
// UWAGA przypominam o sprawdzeniu pliku dane i poprawnym go zapisaniu - kursor ustawic -zeby nie bylo pustego wiersza bo zle wyniki
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int i; // iterator petli for dla liczenia -od przodu- czyli z lewej do prawej
int j; // iterator petli for dla liczenia -od tylu- czyli z prawej do lewej
string a; // zmienna na wczytane slowo ze strumienia danych czyli z pliku
// wczytana jest do tablicy jednowymiarowej bo to string
int b; // zmienna przechowująca dlugosc slowa
bool czy_palindrom; // zmienna pomocnicza, taki wskaźnik,
// ktory przyjmuje wartosc prawda lub falsz
ifstream odczyt("dane.txt"); // definicja obiektu odczyt z wywolaniem konstruktora
// i konstruktor otwiera plik do odczytu
ofstream zapis("palindrom.txt"); // definicja obiektu zapis z wywolaniem konstruktora
// i konstruktor otwiera plik do zapisu
while(!odczyt.eof()) // dopóki nieprawda, ze natrafilismy na koniec pliku
{
odczyt>>a; // czyta pierwszy wyraz z pliku,
b=a.size(); // oblicza dlugosc wczytanego slowa
czy_palindrom = true; // ustawienie zmiennej pomocniczej na -prawda-
// jak zmieni się na -falsz- to wtedy nie jest palindrom
for (i=0, j=b-1; i<b/2; i++, j--) // ustawienie -i- na poczatek wyrazu bo i=0,
// oraz jednoczesne ustawienie -j- na koniec wyrazu bo j=b-1
// w wyrażeniu j=b-1 dlatego jest to "-1" gdyz w C++ liczymy od 0
// i++ bo idziemy w prawo, j-- bo idziemy w lewo
// po tablicy gdzie wpisane jest slowo
{
if (a[i]!=a[j])
czy_palindrom = false; // jak nie sa to takie same litery
// to zmienna pomocnicza ma przyjac wartosc -falsz-
}
if (czy_palindrom==true ) // sprawdzam, jaka wartosc po wyjsciu z petli for
// ma zmienna czy_palindrom
// jesli ma wartosc -prawda- to zapisuje slowo do pliku palindrom.txt
zapis<<a<<endl;
}
odczyt.close();
zapis.close();
return 0;
}