Cod sursa(job #999036)

Utilizator toncuvasileToncu Vasile toncuvasile Data 18 septembrie 2013 23:13:00
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#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=value+pow(57,j-x)*(str[x]-65);
   return value;
}