Palindromy
Palindrom jest to pojedynczy wyraz (lub całe zdanie), który czytany od tył i od przodu brzmi tak samo. Palindromy w C++ są jednym z podstawowych zagadnień jakie należy poznać, przygotowując się do matury z informatyki. Wystąpiły one dotychczas na wielu wielu maturach, a zadania związane z palindromami są bardzo podobne.
Palindromy informacje
Przykładem palindromu jest wyraz kajak. Czytany od tył i od przodu brzmi tak samo. Aby sprawdzić czy dany wyraz jest palindromem, wystarczy go odwrócić i sprawdzić czy jest taki sam jak przed odwróceniem. Jest to najszybsza i najwydajniejsza metoda.
Palindromy algorytm
Prosty algorytm w postaci listy kroków, sprawdzający czy wyraz jest palindromem:
- Początek algorytmu
- Wczytaj wyraz do zmiennej słowo
- Odwróć zmienną słowo i zapisz wynik do zmiennej tymczasowa
- Jeżeli słowo=tymczasowa to wyraz jest palindromem
- W przeciwnym wypadku nie jest palindromem
- Koniec algorytmu
Palindromy program C++
Funkcja do sprawdzania czy wyraz jest palindromem jest bardzo prosta. Najtrudniejszą kwestią jest odwrócenie zmiennej string. Istnieje na to kilka sposobów. Najbardziej podstawowa metoda to użycie pętli, która będzie przepisywała zmienną do innej zmiennej, literka po literce, zaczynając od tył:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
bool palindrom(string wyraz)
{
string odwrocony; // tutaj zapiszemy wyraz odwrotnie
int dlugosc = wyraz.length(); // dlugosc wyrazu
// odwracamy wyraz
for(int i = 0; i < dlugosc; i++)
{
odwrocony += wyraz[dlugosc - i - 1];
}
// zwracamy true lub false
return wyraz == odwrocony;
}
int main()
{
string wyraz;
cout << "Podaj wyraz do sprawdzenia:" << endl;
cin >> wyraz;
if (palindrom(wyraz) == true)
{
cout << "Wyraz jest palindromem" << endl;
}
else
{
cout << "Wyraz NIE jest palindromem" << endl;
}
system("PAUSE");
return 0;
}
Po wywołaniu funkcji palindrom zwraca ona true lub false.
Palindromy w C
Palindromy bardzo łatwo sprawdź w języku C. Istnieje w nim funkcja strrev() odwracająca wyraz. Dzięki temu nie trzeba bawić się z pętlą i liczeniem miejsc. Weź pod uwagę fakt, że na maturze deklarując język C++, możesz korzystać z funkcji języka C. Wystarczy zaimportować odpowiednie biblioteki. Niestety działają one tylko na zmiennych char, wymagana byłaby konwersja ze string:
#include <stdio.h>
#include <stdlib.h>
int palindrom(char* wyraz)
{
char odwrocony[255];
//kopiujemy wyraz do zmiennej pomocniczej
strcpy(odwrocony, wyraz);
//odwracamy wyraz
strrev(odwrocony);
//jezeli wyrazy sie zgadzaja zwroc 1
if (strcmp(wyraz, odwrocony) == 0)
{
return 1;
}
return 0;
}
int main()
{
char wyraz[255];
printf("Podaj wyraz do sprawdzenia:\n");
scanf("%s", wyraz);
printf("%d\n", palindrom(wyraz));
system("PAUSE");
return 0;
}