Răspuns:
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream f("circular.in");
ofstream g("circular.out");
char s1[100], s2[100], tmp[100], ch[1];
int n,i, p, gasit,lens1;
int main()
{
f >> n; f.get();
f.getline(s1,100);
f.getline(s2,100);
lens1=strlen(s1);
for (p=1; p<lens1; p++)
{
tmp[0]=0; ch[0]=0;
ch[0]=s1[0];
strcpy(tmp,s1+1);
strcpy(s1,tmp);
strcat(s1,ch);
if (strcmp(s1,s2)==0)
{
gasit=1;
break;
}
}
if (gasit)
g << p;
else g << -1;
return 0;
}
Explicație:
facem repetat deplasarile spre stanga, primul se duce pe ultima pozitie.
Ar fi util sa faci pe hartie...
Fie datele sunt n=4 si s1="ABCD", ATUNCI DEPLASARILE SUNT
BCDA
CDAB
DABC