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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2010, 20:17   #1
almareta
 
Регистрация: 14.12.2009
Сообщений: 4
По умолчанию количество слов в тексте

Пишу курсовик на Turbo C++.Программа следующего плана.Нужно вводить текст из внешнего файла в Memo и далее нажав на кнопку посчитать количество слов в тексте.
Вывод текста осуществила, проблема со второй частью.
Мысли следующие посчитать количество пробелов и прибавить единицу и получится количество слов.
Вообщем помогите пожалуйста умными мыслями и кодом
almareta вне форума Ответить с цитированием
Старый 01.04.2010, 20:42   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

определись, что значит слово и тогда всё станет ясно

слово:
1 больше 2 символов (ну эт твое дело длину определять)
2 слова отделены между собой пробелами, пунктуацией (. , ! ? и т.п.)

теперь мы знаем как выделить слово - читаем символы до встречи разделителя (ну т.е. пробел и т.д.), нашли разделитель слов, знач +1 к найденным словам

вот так вроде
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 01.04.2010, 20:44   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

вот пример выделящий из строки слова и записывающий их в массив

Код:
procedure TForm1.btn1Click(Sender: TObject);
var
  i, j, h, N1, N2, M1, M2, M3: Integer;
  s1, s2, let: string;
  tmp1, tmp2, res: array[0..10] of string;
begin
  s1 := txt1.Text;
  s2 := txt2.Text;
  N1 := Length(s1);
  N2 := Length(s2);
  j := 0;
  for i := 1 to N1 do begin
    if s1[i] = #32 then begin
      tmp1[j] := let;
      inc(j);
      let := '';
    end
    else begin
      let := let + s1[i];
    end;
  end;
  if let <> '' then tmp1[j] := let;

кстати
Цитата:
посчитать количество пробелов и прибавить единицу и получится количество слов.
- весьма умное решение, +5
но тогда нужно подумать, если слова отделены несколькими пробелами + слова могут быть отделены новой строкой + просто пунктуацией
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]

Последний раз редактировалось RUSt88; 01.04.2010 в 20:49.
RUSt88 вне форума Ответить с цитированием
Старый 01.04.2010, 20:59   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Код:
#include <iostream>
#include <conio.h>
using namespace std;

int Words(const char *c)
{
	bool f = false;
	int w=0;
	while((*c!='\0') && c)
	{
		if((*c>=65 && *c<=90)||(*c>=97 && *c<=122)||
		   (*c>=-32 && *c<=-1)||(*c>=-64 && *c<=-33)||(*c==-72)) f=true;
		else if(f)
		{
			w++; f=false;
		}
		c++;
	}
	if(f)w++;
	return w;
}

int main(void)
{
    printf("%d",Words("Привет,я,тупой!   текст, blabla-bla...sdf,qweйцуёё"));
	getch();
    return 0;
}
Kostia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Количество разных слов в тексте) Если можно сразу код pascal1994 Помощь студентам 1 05.02.2009 10:06
Число перемен знака в массиве. Количество слов в тексте. Pascal. Cartman18 Помощь студентам 1 10.12.2007 12:58
Поиск слов в тексте pleer Общие вопросы Delphi 5 23.09.2007 08:19