👤
a fost răspuns

Se introduc de la tastatura doua cuvinte. Sa se afiseze sufixul comun de lungime maxima. Sau mesajul “Nu exista” daca cele doua cuvinte nu au suffix comun. Ex: DI: Mariana, Elena => DE: na, Ex2: DI: carte, miros => DE: Nu exista (se folosesc pointeri care indica sfarsitul sirului si scad simultan. )
#include
#include
#include

using namespace std;

int main()
{ char s[20], v[21], suf[10], *p;
int i,j;
cout<< "s=";cin.get(s,20);
cin.get();
cout<< "v=";cin.get(v,21);
cin.get();
strrev(s);
strrev(v);
for(i=strlen(s);i<0;i--)
for(j=strlen(v);j<0;j--){
if(strcmp(s-i,v-j)==0)
p=strcpy(suf,s-i);
}
if(p)
cout<

else
cout<< " nu exista";
return 0;
}
ce este gresit??


Răspuns :

#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int main()
{ char s[20],v[21],suf[10];
int i,j=0;
cout<<"s=";
cin.getline(s,20);
cout<<"v=";cin.getline(v,21);
strrev(s);
strrev(v);
for(i=0;s[i] && v[i] && s[i]==v[i];i++)
     {
     suf[j]=s[i];
     j++;
     suf[j]='\0';}
strrev(suf);
cout<<"sufixul:"<<suf;
}


Vezi imaginea JolieJulie
// complexitate timp O(a + b)

#include <iostream>
using namespace std;

int main() {
  string a, b;
  cin >> a >> b;
  int i = a.length() - 1;
  int j = b.length() - 1;
  int l = 0;
  while (0 <= i && 0 <= j && a[i] == b[j]) {
    i--;
    j--;
    l++;
  }
  if(l > 0)
    cout << l;
  else
   cout <<"Nu exista";
  return 0;
}