#include #include #include using namespace std; int main() { fstream plik; plik.open("dane.txt"); string tab1[200]; string tab2[200]; for (int i = 0; i < 200; i++) { plik >> tab1[i]; plik >> tab2[i]; //cout << tab1[i] << " " << tab2[i] << endl; } //5.1 int licznik = 0; for (int i = 0; i < 200; i++) { int dl1 = tab1[i].length(); int err = 0; for (int j = 0; j < dl1; j++) { if (tab1[i][j] != tab1[i][dl1 - 1 - j]) err++; } if (err == 0) licznik++; } for (int i = 0; i < 200; i++) { int dl2 = tab2[i].length(); int err = 0; for (int j = 0; j < dl2; j++) { if (tab2[i][j] != tab2[i][dl2 - 1 - j]) err++; } if (err == 0) licznik++; } //cout << licznik << endl; //5.2 int suma = 0; for (int i = 0; i < 200; i++) { if (tab1[i].length()>tab2[i].length()) { size_t found = tab1[i].find(tab2[i]); if (found != std::string::npos) { //cout << tab1[i] << " " << tab2[i] << endl; suma++; } } else { size_t found = tab2[i].find(tab1[i]); if (found != std::string::npos) { //cout << tab1[i] << " " << tab2[i] << endl; suma++; } } } //cout << suma << endl; //5.3 int obr = 0; for (int i = 0; i < 200; i++) { int zlepy = 0; if (tab1[i].length()>tab2[i].length()) { int dl1 = tab1[i].length(); //cout << tab1[i] << " " << tab2[i] << endl; for (int j = 0; j < tab2[i].length(); j++) //zmiana //#GOOD { int zgoda = 0; int err = 0; for (int k = tab2[i].length()-1; k >= j; k--) { if (tab1[i][k-j] == tab2[i][k]) zgoda++; else err++; //cout << tab1[i][k - j] << ":" << tab2[i][k]<<" "; } if (err == 0 && zgoda>0) zlepy++; //cout << endl; } for (int j = tab2[i].length()-1; j >=0; j--) //zmiana //#GOOD { int zgoda = 0; int err = 0; for (int k = 0; k <= j; k++) { if (tab1[i][dl1-1-j+k] == tab2[i][k]) zgoda++; else err++; //cout << tab1[i][dl1 - 1 - j + k] << ":" << tab2[i][k] << " "; } if (err == 0 && zgoda>0) zlepy++; //cout << endl; } if (zlepy == 0) { obr++; //cout << tab1[i] << " " << tab2[i] << endl; } } else { for (int j = 0; j < tab1[i].length(); j++) //zmiana //#GOOD { int zgoda = 0; int err = 0; for (int k = tab1[i].length() - 1; k >= j; k--) { if (tab2[i][k - j] == tab1[i][k]) zgoda++; else err++; } if (err == 0 && zgoda>0) zlepy++; } for (int j = tab1[i].length()-1; j >= 0; j--) //zmiana //#GOOD { int zgoda = 0; int err = 0; for (int k = 0; k <= j; k++) { if (tab2[i][tab2[i].length() - 1 - j + k] == tab1[i][k]) zgoda++; } if (err == 0 && zgoda>0) zlepy++; else err++; } if (zlepy == 0) { obr++; //cout << tab1[i] << " " << tab2[i] << endl; } } } //cout << obr << endl; //5.4 string kupa[200][2]; // JEDNO W DRUGIM INDEKS KOD: 1 for (int i = 0; i < 200; i++) { if (tab1[i].length()>tab2[i].length()) { size_t found = tab1[i].find(tab2[i]); if (found != std::string::npos) { //cout << tab1[i] << " " << tab2[i] << endl; kupa[i][0] = '1'; kupa[i][1] = tab1[i]; } } else { size_t found = tab2[i].find(tab1[i]); if (found != std::string::npos) { //cout << tab1[i] << " " << tab2[i] << endl; kupa[i][0] = '1'; kupa[i][1] = tab2[i]; } } } // ZLEPA INDEKS KOD: 2 // ODDZIELNE INDEKS KOD: 3 for (int i = 0; i < 200; i++) { int zlepy = 0; if (tab1[i].length()>tab2[i].length()) { int dl1 = tab1[i].length(); //cout << tab1[i] << " " << tab2[i] << endl; for (int j = 0; j < tab2[i].length(); j++) //zmiana //#GOOD { int zgoda = 0; int err = 0; for (int k = tab2[i].length() - 1; k >= j; k--) { if (tab1[i][k - j] == tab2[i][k]) zgoda++; else err++; //cout << tab1[i][k - j] << ":" << tab2[i][k]<<" "; } if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2") { kupa[i][0] = '2'; for (int l = 0; l < tab1[i].length(); l++) kupa[i][1] = kupa[i][1] + tab1[i][l]; for (int p = j - 1; p >= 0; p--) kupa[i][1] = tab2[i][p] + kupa[i][1]; } //cout << endl; } for (int j = tab2[i].length() - 1; j >= 0; j--) //zmiana //#GOOD { int zgoda = 0; int err = 0; int rem; for (int k = 0; k <= j; k++) { if (tab1[i][dl1 - 1 - j + k] == tab2[i][k]) zgoda++; else err++; //cout << tab1[i][dl1 - 1 - j + k] << ":" << tab2[i][k] << " "; rem = k; } if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2") { kupa[i][0] = '2'; for (int l = 0; l < tab1[i].length(); l++) kupa[i][1] = kupa[i][1] + tab1[i][l]; for (int p =rem+1; p = j; k--) { if (tab2[i][k - j] == tab1[i][k]) zgoda++; } if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2") { kupa[i][0] = '2'; for (int l = 0; l < tab2[i].length(); l++) kupa[i][1] = kupa[i][1] + tab2[i][l]; for (int p = j - 1; p >= 0; p--) kupa[i][1] = tab1[i][p] + kupa[i][1]; } } for (int j = tab1[i].length() - 1; j >= 0; j--) //zmiana //#GOOD { int zgoda = 0; int err = 0; int rem; for (int k = 0; k <= j; k++) { if (tab2[i][tab2[i].length() - 1 - j + k] == tab1[i][k]) zgoda++; rem = k; } if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2") { kupa[i][0] = '2'; for (int l = 0; l < tab2[i].length(); l++) kupa[i][1] = kupa[i][1] + tab2[i][l]; for (int p = rem + 1; p