Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2015, 16:14   #1
fx-mercury
Новичок
Джуниор
 
Регистрация: 02.06.2015
Сообщений: 1
По умолчанию Прошу помощи в решение задачи "Строки Фибоначчи"

Код:
#include <fstream>
#include <cstring>
#include <string>
#include <iostream>

	using namespace std;
/*
int getcalc( const char *str, const char *substr ) 
{
	int cnt = 0, offset = strlen( substr );

	register char *p = const_cast<char*>(str);

	while( p = strstr( p, substr ) ) {

		p = p + offset - 1;

		cnt++;
	}

	return cnt;
}

int getcalc( const string &str, const string substr ) 
{
	int cnt = 0, offset = strlen( substr.c_str() );

	register char *p = const_cast<char*>(str.c_str());

	while( p = strstr( p, substr.c_str() ) ) {

		p = p + offset - 1;

		cnt++;
	}

	return cnt;
}


int calculate( )
{
	int next = 2, arr[46] = { 1, 1, 3, 4, 8 };

		for( int i = 2; i < 45; i++ ) 
		{
			if( next == 2 ) {

				arr[ i ] = arr[ i - 1 ] + arr[ i - 2 ] + 1; 

				next = 0;

			} else {
				
				arr[ i ] = arr[ i - 1 ] + arr[ i - 2 ] + 0;
			}

			next++;
		}

		for( int i = 2; i < 45; i++ ) {
			cout<<i<<' '<<arr[ i ]<<endl;
		}

	return 0;//arr[ 34 - 3 ];
}
*/

int getmatch( int index, string seq )
{

	index--;

	string fib[ 46 ] = { "A", "B" };
	string sub[ 46 ];


	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;


	cout<<getmatch( 6 , "BBABAB" )<<endl;


	if_file.close();
	of_file.close();
	
	return std::cin.get();
}
Проблема при обработки строки больше 40 символов. памяти не хватает. на закомментируемые функции не смотрите

Подробное описание задачи. Я замучился с ней.

Последний раз редактировалось Stilet; 02.06.2015 в 18:15.
fx-mercury вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решение задачи методом "поиск решения" в Excel FullhDi Microsoft Office Excel 19 03.03.2015 16:20
задачи в Си на "Строки" и "Структуры" Ховард Помощь студентам 2 14.06.2011 11:10
написать программу "решение транспортной задачи дельта методом" на Delphi DIMAN488 Помощь студентам 1 06.12.2010 00:34
Прошу помощи со второй функцией "f2(x)" BigMoney Помощь студентам 1 02.02.2009 17:43