Cod sursa(job #999104)

Utilizator toncuvasileToncu Vasile toncuvasile Data 19 septembrie 2013 11:20:00
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
#include<string>
using namespace std;

bool potrivite(int i,int b);
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;
  for(int i=0;i<=a-b;i++){
    if(sir[i]==subsir[0] && sir[i+b]==subsir[b] && sir[i+1]==subsir[1]){
        if(potrivite(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;
  int j=0;
  while(j<=b && t==true){
      if(subsir[j]!=sir[i+j]) t=false;
      j++;
  }
  return t;
}