Facebook
From Duck, 7 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 248
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.  
  10.         fstream plik;
  11.         plik.open("dane.txt");
  12.         string tab1[200];
  13.         string tab2[200];
  14.  
  15.         for (int i = 0; i < 200; i++)
  16.         {
  17.                 plik >> tab1[i];
  18.                 plik >> tab2[i];
  19.                 //cout << tab1[i] << "  " << tab2[i] << endl;
  20.         }
  21.  
  22.         //5.1
  23.  
  24.         int licznik = 0;
  25.  
  26.         for (int i = 0; i < 200; i++)
  27.         {
  28.                 int dl1 = tab1[i].length();
  29.                 int err = 0;
  30.                 for (int j = 0; j < dl1; j++)
  31.                 {
  32.                         if (tab1[i][j] != tab1[i][dl1 - 1 - j]) err++;
  33.                 }
  34.                 if (err == 0) licznik++;
  35.         }
  36.         for (int i = 0; i < 200; i++)
  37.         {
  38.                 int dl2 = tab2[i].length();
  39.                 int err = 0;
  40.                 for (int j = 0; j < dl2; j++)
  41.                 {
  42.                         if (tab2[i][j] != tab2[i][dl2 - 1 - j]) err++;
  43.                 }
  44.                 if (err == 0) licznik++;
  45.         }
  46.         //cout << licznik << endl;
  47.  
  48.         //5.2
  49.  
  50.         int suma = 0;
  51.  
  52.         for (int i = 0; i < 200; i++)
  53.         {
  54.                 if (tab1[i].length()>tab2[i].length())
  55.                 {
  56.                         size_t found = tab1[i].find(tab2[i]);
  57.                         if (found != std::string::npos)
  58.                         {
  59.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  60.                                 suma++;
  61.                         }
  62.                 }
  63.                 else
  64.                 {
  65.                         size_t found = tab2[i].find(tab1[i]);
  66.                         if (found != std::string::npos)
  67.                         {
  68.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  69.                                 suma++;
  70.                         }
  71.                 }
  72.         }
  73.         //cout << suma << endl;
  74.  
  75.         //5.3
  76.  
  77.         int obr = 0;
  78.        
  79.         for (int i = 0; i < 200; i++)
  80.         {
  81.                 int zlepy = 0;
  82.                 if (tab1[i].length()>tab2[i].length())
  83.                 {
  84.                         int dl1 = tab1[i].length();
  85.                         //cout << tab1[i] << "  " << tab2[i] << endl;
  86.                         for (int j = 0; j < tab2[i].length(); j++) //zmiana //#GOOD
  87.                         {
  88.                                 int zgoda = 0;
  89.                                 int err = 0;
  90.                                 for (int k = tab2[i].length()-1; k >= j; k--)
  91.                                 {
  92.                                         if (tab1[i][k-j] == tab2[i][k]) zgoda++;
  93.                                         else err++;
  94.                                         //cout << tab1[i][k - j] << ":" << tab2[i][k]<<"  ";
  95.                                 }
  96.                                 if (err == 0 && zgoda>0) zlepy++;
  97.                                 //cout << endl;
  98.                         }
  99.                         for (int j = tab2[i].length()-1; j >=0; j--) //zmiana //#GOOD
  100.                         {
  101.                                 int zgoda = 0;
  102.                                 int err = 0;
  103.                                 for (int k = 0; k <= j; k++)
  104.                                 {
  105.                                         if (tab1[i][dl1-1-j+k] == tab2[i][k]) zgoda++;
  106.                                         else err++;
  107.                                         //cout << tab1[i][dl1 - 1 - j + k] << ":" << tab2[i][k] << "  ";
  108.                                 }
  109.                                 if (err == 0 && zgoda>0) zlepy++;
  110.                                 //cout << endl;
  111.                         }
  112.                         if (zlepy == 0)
  113.                         {
  114.                                 obr++;
  115.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  116.                         }
  117.                 }
  118.                 else
  119.                 {
  120.                         for (int j = 0; j < tab1[i].length(); j++) //zmiana //#GOOD
  121.                         {
  122.                                 int zgoda = 0;
  123.                                 int err = 0;
  124.                                 for (int k = tab1[i].length() - 1; k >= j; k--)
  125.                                 {
  126.                                         if (tab2[i][k - j] == tab1[i][k]) zgoda++;
  127.                                         else err++;
  128.                                 }
  129.                                 if (err == 0 && zgoda>0) zlepy++;
  130.                         }
  131.                         for (int j = tab1[i].length()-1; j >= 0; j--) //zmiana //#GOOD
  132.                         {
  133.                                 int zgoda = 0;
  134.                                 int err = 0;
  135.                                 for (int k = 0; k <= j; k++)
  136.                                 {
  137.                                         if (tab2[i][tab2[i].length() - 1 - j + k] == tab1[i][k]) zgoda++;
  138.                                 }
  139.                                 if (err == 0 && zgoda>0) zlepy++;
  140.                                 else err++;
  141.                         }
  142.                         if (zlepy == 0)
  143.  
  144.                         {
  145.                                 obr++;
  146.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  147.                         }
  148.                 }
  149.         }
  150.         //cout << obr << endl;
  151.  
  152.         //5.4
  153.  
  154.         string kupa[200][2];
  155.  
  156.         // JEDNO W DRUGIM INDEKS KOD: 1
  157.  
  158.         for (int i = 0; i < 200; i++)
  159.         {
  160.                 if (tab1[i].length()>tab2[i].length())
  161.                 {
  162.                         size_t found = tab1[i].find(tab2[i]);
  163.                         if (found != std::string::npos)
  164.                         {
  165.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  166.                                 kupa[i][0] = '1';
  167.                                 kupa[i][1] = tab1[i];
  168.                         }
  169.                 }
  170.                 else
  171.                 {
  172.                         size_t found = tab2[i].find(tab1[i]);
  173.                         if (found != std::string::npos)
  174.                         {
  175.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  176.                                 kupa[i][0] = '1';
  177.                                 kupa[i][1] = tab2[i];
  178.                         }
  179.                 }
  180.         }
  181.  
  182.         // ZLEPA INDEKS KOD: 2
  183.         // ODDZIELNE INDEKS KOD: 3
  184.  
  185.         for (int i = 0; i < 200; i++)
  186.         {
  187.                 int zlepy = 0;
  188.                 if (tab1[i].length()>tab2[i].length())
  189.                 {
  190.                         int dl1 = tab1[i].length();
  191.                         //cout << tab1[i] << "  " << tab2[i] << endl;
  192.                         for (int j = 0; j < tab2[i].length(); j++) //zmiana //#GOOD
  193.                         {
  194.                                 int zgoda = 0;
  195.                                 int err = 0;
  196.                                 for (int k = tab2[i].length() - 1; k >= j; k--)
  197.                                 {
  198.                                         if (tab1[i][k - j] == tab2[i][k]) zgoda++;
  199.                                         else err++;
  200.                                         //cout << tab1[i][k - j] << ":" << tab2[i][k]<<"  ";
  201.                                 }
  202.                                 if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2")
  203.                                 {
  204.                                         kupa[i][0] = '2';
  205.                                         for (int l = 0; l < tab1[i].length(); l++) kupa[i][1] = kupa[i][1] + tab1[i][l];
  206.                                         for (int p = j - 1; p >= 0; p--) kupa[i][1] = tab2[i][p] + kupa[i][1];
  207.                                 }
  208.                                 //cout << endl;
  209.                         }
  210.                         for (int j = tab2[i].length() - 1; j >= 0; j--) //zmiana //#GOOD
  211.                         {
  212.                                 int zgoda = 0;
  213.                                 int err = 0;
  214.                                 int rem;
  215.                                 for (int k = 0; k <= j; k++)
  216.                                 {
  217.                                         if (tab1[i][dl1 - 1 - j + k] == tab2[i][k]) zgoda++;
  218.                                         else err++;
  219.                                         //cout << tab1[i][dl1 - 1 - j + k] << ":" << tab2[i][k] << "  ";
  220.                                         rem = k;
  221.                                 }
  222.                                 if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2")
  223.                                 {
  224.                                         kupa[i][0] = '2';
  225.                                         for (int l = 0; l < tab1[i].length(); l++) kupa[i][1] = kupa[i][1] + tab1[i][l];
  226.                                         for (int p =rem+1; p <tab2[i].length()-1; p++) kupa[i][1] = kupa[i][1] + tab2[i][p];
  227.                                 }
  228.                                 //cout << endl;
  229.                         }
  230.                         if (zlepy == 0 && kupa[i][0] != "1" && kupa[i][0] != "2")
  231.                         {
  232.                                 kupa[i][0] = '3';
  233.                                 kupa[i][1] = tab1[i] + tab2[i];
  234.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  235.                         }
  236.                 }
  237.                 else
  238.                 {
  239.                         for (int j = 0; j < tab1[i].length(); j++) //zmiana //#GOOD
  240.                         {
  241.                                 int zgoda = 0;
  242.                                 int err = 0;
  243.                                 for (int k = tab1[i].length() - 1; k >= j; k--)
  244.                                 {
  245.                                         if (tab2[i][k - j] == tab1[i][k]) zgoda++;
  246.                                 }
  247.                                 if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2")
  248.                                 {
  249.                                         kupa[i][0] = '2';
  250.                                         for (int l = 0; l < tab2[i].length(); l++) kupa[i][1] = kupa[i][1] + tab2[i][l];
  251.                                         for (int p = j - 1; p >= 0; p--) kupa[i][1] = tab1[i][p] + kupa[i][1];
  252.                                 }
  253.                         }
  254.                         for (int j = tab1[i].length() - 1; j >= 0; j--) //zmiana //#GOOD
  255.                         {
  256.                                 int zgoda = 0;
  257.                                 int err = 0;
  258.                                 int rem;
  259.                                 for (int k = 0; k <= j; k++)
  260.                                 {
  261.                                         if (tab2[i][tab2[i].length() - 1 - j + k] == tab1[i][k]) zgoda++;
  262.                                         rem = k;
  263.                                 }
  264.                                 if (err == 0 && zgoda>0 && kupa[i][0] != "1" && kupa[i][0] != "2")
  265.                                 {
  266.                                         kupa[i][0] = '2';
  267.                                         for (int l = 0; l < tab2[i].length(); l++) kupa[i][1] = kupa[i][1] + tab2[i][l];
  268.                                         for (int p = rem + 1; p <tab1[i].length() - 1; p++) kupa[i][1] = kupa[i][1] + tab1[i][p];
  269.                                 }
  270.                         }
  271.                         if (zlepy == 0 && kupa[i][0] != "1" && kupa[i][0] != "2")
  272.                         {
  273.                                 kupa[i][0] = '3';
  274.                                 kupa[i][1] = tab1[i] + tab2[i];
  275.                                 //cout << tab1[i] << "  " << tab2[i] << endl;
  276.                         }
  277.                 }
  278.         }
  279.         for (int i = 0; i < 200; i++) cout << kupa[i][0] << "  " << kupa[i][1]<<endl;
  280.  
  281.         system("PAUSE");
  282.         return 0;
  283. }