#include <fstream>
#include <cstring>
#include <string>
#include <iostream>
	using namespace std;
int getmatch( int index, string seq )
{
	index--;
	string fib[ 46 ] = { "A", "B" };
	for( int i = 2; i < index + 1; i++ ) {
		fib[ i ] = fib[ i - 1 ] + fib[ i - 2 ];
	}
	int cnt = 0, offset = strlen( seq.c_str() );
	char *p = const_cast<char*>(fib[ index ].c_str());
	while( p = strstr( p, seq.c_str() ) ) {
		p = p + offset - 1;
		cnt++;
	}
	return cnt;
}
int main( void )
{
	ofstream of_file("output.txt");
	ifstream if_file("input.txt");
	string seq;
	int    index;
	//if_file>>index>>seq;
	//of_file<<getmatch( index, seq );
	//cin>>index>>seq;
	
	index = 10;
	seq = "BBABAB";
	
	cout<<' '<<getmatch( index , seq )<<endl;
	if_file.close();
	of_file.close();
	
	return std::cin.get();
}
происходит вылет при index = 45
Задача считает количество вхождений подстроки в строку фибоначчи