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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 13:37   #1
woot
Пользователь
 
Аватар для woot
 
Регистрация: 18.10.2011
Сообщений: 10
По умолчанию Разбить строку на предложения, посчитать количество слов в предложении, вывести предложения, удовлетворяющие условию. Си

Задание: 1.ввести число Х - кол-во слов в предложении.
2. Считать текст из файла.
3. Вывести предложения, число слов которых совпадает с Х
Использовать ф-ии из библиотеки string.

Есть код (тестовая версия):
Код:
#define l_b 9000
#define s_b 512

char *p_str_f;

using namespace std;

void f_sc(void)
{
	char *p_t_s, *p_t_w, *p_t_p, t_w[l_b];
	char str_2[]=".\n";
	int i=0;

	cout<<"***"<<endl;
	cout<<p_str_f<<endl;
	cout<<strlen(p_str_f)<<endl;
	cout<<"***"<<endl;

	p_t_p=t_w;
	*p_t_p=0;

	p_t_s=strtok(p_str_f, str_2);
	while(p_t_s!=NULL)
	{
		strcpy(p_t_p, p_t_s);
		p_t_w=strtok(p_t_p, " ");
		while(p_t_w!=NULL)
		{
			i++;
			p_t_w=strtok(NULL, " ");
		}
		cout<<i<<endl;
		i=0;
		p_t_s=strtok(NULL, str_2);
	}
}
Вопрос следующий: программа считает кол - во слов только в первом предложении, почему? Как исправить?
woot вне форума Ответить с цитированием
Старый 18.10.2011, 14:55   #2
woot
Пользователь
 
Аватар для woot
 
Регистрация: 18.10.2011
Сообщений: 10
По умолчанию

Стоит попробовать предложение заносить в массив строк. После чего работать с массивом.
woot вне форума Ответить с цитированием
Старый 18.10.2011, 16:19   #3
woot
Пользователь
 
Аватар для woot
 
Регистрация: 18.10.2011
Сообщений: 10
По умолчанию

Сделал так. Это нормально, или можно проще?
Код:
void f_sc(int x)
{
	char *p_t_c,t_f[l_b];
	char str_[]=".\n";
	
	char **p_t_s=new char *[l_b];
	for(int k=0;k<l_b;++k)
	{
		p_t_s[k]=new char[l_b];
		*p_t_s[k]=0;
	}

	int i=0,j=0;

	p_t_c=strtok(p_str_f,str_);
	while(p_t_c!=NULL)
	{
		strcpy(p_t_s[i++],p_t_c);
		p_t_c=strtok(NULL,str_);
	}
	for(int k=0;k<i;++k)
	{
		strcpy(t_f,p_t_s[k]);
		p_t_c=strtok(p_t_s[k]," ");
		while(p_t_c!=NULL)
		{
			j++;
			p_t_c=strtok(NULL," ");
		}
		if(j==x)
			cout<<t_f<<endl;
		j=0;
	}

	
	delete[]p_t_s;
}
woot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать количество слов OPEJI Паскаль, Turbo Pascal, PascalABC.NET 5 19.05.2011 17:58
В предложении подсчитать количество слов. Delphi King21 Помощь студентам 4 16.03.2011 14:26
Подсчитать количество предложений. Расставить предложения по возрастанию количества слов в каждом. death65 Помощь студентам 1 13.12.2010 18:33
Напишите программу, удаляющую из всех слов предложения k-ую букву parovoz121 Помощь студентам 5 05.06.2010 15:49
Создать новую строку и скопировать ячейки, удовлетворяющие условию. druzimm3 Microsoft Office Excel 6 13.05.2010 18:20