Okej a więc pełne zadanie brzmi tak:
TREŚĆ ZADANIA:
Bank oferuje swoim klientom internetowe konta osobiste. Do korzystania z tych kont potrzebna jest lista haseł jednorazowych. Jesteś pracownikiem Wydziału Bezpieczeństwa. Wydział ten zajmuje się tworzeniem dla klientów list haseł jednorazowych na podstawie słów wcześniej wygenerowanych przez Wydział Statystyk, według ustalonych przez bank algorytmów.
Na początku swojej działalności bank stosował następującą metodę generowania haseł. Hasłami jednorazowymi są zapisane od końca słowa wygenerowane przez Wydział Statystyk.
Przykład haseł wg schematu hasło : wygenerowane hasło
kajak : kajak
egzamin : nimazge
kominiarz : zrainimok
Metoda tworzenia haseł opisana w punkcie 1. okazała się zawodna, dlatego Wydział Bezpieczeństwa postanowił zmienić algorytm.
Palindrom to takie słowo, które czytane od lewej do prawej i od prawej do lewej jest takie same.
Algorytm tworzenia hasła ze słowa w:
− wyznacz najdłuższe słowo w1 takie, że w1 jest początkiem słowa w oraz w1 jest palindromem
− oznaczmy w=w1w2
− hasło powstaje przez złączenie dwóch słów: w2 zapisanego od prawej do lewej i w.
Uwaga: Jeśli w jest palindromem, to w=w1, a słowo w2 jest puste (nie zawiera żadnych znaków).
Przykład haseł wygenerowanych za pomocą punktu 2 słowo : najdłuższy palindrom rozpoczynający słowo : utworzone hasło
kajak : kajak : kajak
kajakarstwo : kajak : owtsrakajakarstwo
mama : mam : amama
egzamin : e : nimazgegzamin
NAPISZ PROGRAM KTÓRY:
wczyta dowolny tekst
wygeneruje hasło jednorazowe z wykorzystaniem palidromu i wypisze je na ekran
A do tej pory udało mi się zrobić odwracanie wyrazu wpisanego przez użytkownika
#include <iostream>
using namespace std;
string reverse(string str) {
string Rstr;
int len = str.length();
for (int i = len - 1; i >= 0; i--)Rstr += str[i];
return Rstr;
}
int main() {
string password_input;
cout << "Wpisz wyraz z ktorego chcesz wygenerowac haslo: " << endl;
cin >> password_input;
cout << password_input << endl;
password_input = reverse(password_input);
cout << password_input << endl;
return 0;
}