Pagini recente » Cod sursa (job #2189662) | Cod sursa (job #1111644) | Cod sursa (job #1150552) | Cod sursa (job #2747314) | Cod sursa (job #999031)
Cod sursa(job #999031)
#include<fstream>
#include<string>
#include<cmath>
using namespace std;
// bool potrivite(int i,int b);
float has(string str,int i,int j);
string sir,subsir;
int main(){
ifstream inFile("strmatch.in");
getline(inFile,subsir);
getline(inFile,sir);
ofstream outFile;
outFile.open("strmatch.out");
int a,b;
a=sir.size()-1;
b=subsir.size()-1;
int pozitii[1001];
int N=0;
int q=trunc(has(subsir,0,b));
for(int i=0;i<=a-b;i++){
if(sir[i]==subsir[0] && sir[i+b]==subsir[b] && sir[i+1]==subsir[1]){
if(q==trunc(has(sir,i,i+b))){
N++;
pozitii[N]=i;
}
}
}
if(N>1000) N=1000;
outFile<<N<<"\n";
for(int i=1;i<=N;i++) outFile<<pozitii[i]<<" ";
/* outFile<<endl<<potrivite(6,3)<<endl;
outFile<<sir<<endl;
outFile<<subsir<<endl;
outFile<<a<<" "<<b;
*/
}
/*bool potrivite(int i,int b){
bool t=true;
for(int j=0;j<=b;j++) if(subsir[j]!=sir[i+j]) t=false;
return t;
}
*/
float has(string str, int i, int j){
float value=0;
for(int x=i;x<=j;x++) value=pow(57,j-x)*(str[x]-65);
return value;
}