Advertisement
2000fer

Untitled

May 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. string s;
  7. string corte1,corte2;
  8. string resp1,resp2;
  9.  
  10.  
  11. bool palindromo(string a){
  12.  
  13.          int i=0, j=a.size()-1;
  14.  
  15.          while(i!=j){
  16.  
  17.                if(a[i] != a[j]) return false;
  18.  
  19.                i++;
  20.                j--;
  21.  
  22.                if(i>j) return true;
  23.          }
  24.          return true;
  25. }
  26.  
  27.  
  28. bool palizq(string a){
  29.  
  30.       int i=1, j=a.size()-1;
  31.  
  32.       while(i!=j){
  33.  
  34.            if(a[i] != a[j]) return false;
  35.  
  36.            i++;
  37.            j--;
  38.  
  39.       }
  40.       return true;
  41. }
  42.  
  43. bool palder(string a){
  44.  
  45.      int i=0, j=a.size()-2;
  46.  
  47.      while(i!=j){
  48.  
  49.          if(a[i] != a[j]) return false;
  50.  
  51.          i++;
  52.          j--;
  53.  
  54.      }
  55.      return true;
  56. }
  57.  
  58. int main(){
  59.  
  60.           cin >> s;
  61.  
  62.           if(s.size() < 4){ cout <<"no se puede"; return 0; }
  63.  
  64.           vector<string> soluciones;
  65.  
  66.  
  67.           for(int i=2; i<s.size()-1; i++){
  68.  
  69.                 for(int j=0; j<i; j++) corte1.push_back(s[j]);
  70.  
  71.                 for(int j=i; j<s.size(); j++) corte2.push_back(s[j]);
  72.  
  73.                 bool disting1=false;
  74.                 bool disting2=false;
  75.  
  76.  
  77.                 bool pal1 = palindromo(corte1);
  78.                 bool pali1 = palizq(corte1);
  79.                 bool pald1 = palder(corte1);
  80.  
  81.                 resp1 = corte1;
  82.  
  83.  
  84.                 if(pal1==true){
  85.                    resp1 = resp1 + " palindromo"; }
  86.  
  87.                 if(corte1.size()>=3 && pali1==true){
  88.                    resp1 = resp1 + " i-palindromo"; }
  89.  
  90.                 if(corte1.size()>=3 && pald1==true){
  91.                    resp1 = resp1 + " d-palindromo"; }
  92.  
  93.  
  94.                 bool pal2 = palindromo(corte2);
  95.                 bool pali2 = palizq(corte2);
  96.                 bool pald2 = palder(corte2);
  97.  
  98.                 resp2 = corte2;
  99.  
  100.  
  101.                 if(pal2==true){
  102.                    resp2 = resp2 + " palindromo"; }
  103.  
  104.                 if(corte2.size()>=3 && pali2==true){
  105.                    resp2 = resp2 + " i-palindromo"; }
  106.  
  107.                 if(corte2.size()>=3 && pald2==true){
  108.                    resp2 = resp2 + " d-palindromo"; }
  109.  
  110.  
  111.  
  112.                 if(pal1==true || pali1==true || pald1==true) disting1=true;
  113.  
  114.                 if(pal2==true || pali2==true || pald2==true) disting2=true;
  115.  
  116.                 if(disting1==true && disting2==true){
  117.                     soluciones.push_back(resp1);
  118.                     soluciones.push_back(resp2);
  119.                 }
  120.  
  121.                 disting1=false;
  122.                 disting2=false;
  123.  
  124.                 pal1=false;
  125.                 pali1=false;
  126.                 pald1=false;
  127.                 pal2=false;
  128.                 pali1=false;
  129.                 pald2=false;
  130.  
  131.                 corte1.clear();
  132.                 corte2.clear();
  133.                 resp1.clear();
  134.                 resp2.clear();
  135.           }
  136.  
  137.  
  138.  
  139.       if(soluciones.size()>0) for(auto i: soluciones) cout << i <<endl;
  140.       else cout <<"no se puede";
  141.  
  142.  
  143.  
  144. return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement