Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как найти слова в тексте, начинающиеся на букву "а" или "А". 
V
    Опции темы
Malish
Дата 12.6.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 18.2.2006

Репутация: нет
Всего: нет



В Мемо1 есть текст, в нем нужно найти все слова начинающиеся на букву "а" или "А", и вывести их в Мемо2.

sim7 , спасибо, с подсчетом слов разобрался. 
PM MAIL   Вверх
mr.Anderson
Дата 12.6.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Хм... Для такого условия могу предложить только вариант, например, если слова разделены пробелами (я модифицирую предыдущий фрагмент кода, который я вам давал). Тогда сделать можно так:
Код

const AnsiString symbol="а";
int pos;
bool flag=false;

for(int i=0; i<=ListBox1->Items->Count-1; i++)
do
{
 if( ListBox1->Items->Strings[i].Pos(symbol) )
 {
  pos=ListBox1->Items->Strings[i].Pos(symbol);
  
  int word_end=pos;
  while( (ListBox1->Items->Strings[i].SubString(word_end , 1) != " " )
   word_end+=1;

  Memo1->Lines->Add(ListBox1->Items->Strings[i].SubString(pos, word_end);
  Memo1->Lines->Add("");
 }
} while(flag);

Код писал сходу, не проверяя. Если будут ошибки, скажите.

P.S. С первого взгляда код красив... smile  

Это сообщение отредактировал(а) sim7 - 12.6.2006, 21:06


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Malish
Дата 13.6.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 18.2.2006

Репутация: нет
Всего: нет



в ListBox1 ввожу:
арбуз мама африка
америка папа    арка
мама арка папа

В Мемо1 получаю:
арбуз 

америка

ама а


sim7, можно ли как-нибуть получить первый символ каждой строчки(для того чтобы провереть первое слово каждой строчки), и может лудше находить пробеллы в строчках, а потом проверять какая буква идет после пробелла, так мы точно найдем слова начинающиеся на нужную букву.


PM MAIL   Вверх
Romikgy
Дата 13.6.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString sx;
TReplaceFlags rf;
rf<< rfReplaceAll;
sx=ListBox1->Items->Text;
Memo1->Clear();
ListBox1->Items->Text=StringReplace(sx," ","\n" ,rf);
for ( int i=0;i<ListBox1->Items->Count;i++)
if (ListBox1->Items->Strings[i].Length()>0 && *StrLower(ListBox1->Items->Strings[i].c_str())=='а')
Memo1->Lines->Add(ListBox1->Items->Strings[i]);
ListBox1->Items->Text=sx;
}
  

Это сообщение отредактировал(а) Romikgy - 13.6.2006, 16:20


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Oleg_Ci
  Дата 13.6.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 25
Всего: 30



Короче надо бросить на форму два Memo, и кнопку, в обработчик нажатия кнопки введи этот код. А ещё вставь #include  <ctype.h>. Вообще-то код можно-было и получше сообразить, но копаться лишнее время неохота.
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int n=0,pt;
  char ch[]="                   ";//20
  char *c=Memo1->Lines->GetText();
  for( int i=0; i<Memo1->Text.Length(); i++ )
  {
    if ( isspace(c[i]))
     continue;
    if ( c[i]=='а' || c[i]=='А' )
    {
      pt=0;
      do
      {
        ch[pt]=c[i];
        pt++; i++;
      }
      while(!isspace(c[i]) && c[i]!='\0');
      ch[pt+1]='\0';
      Memo2->Lines->Add(ch);
      n++;
      continue;
    }
    while( !isspace(c[i]))
        i++;
  }
  Memo2->Lines->Add("Количество строк :");
  Memo2->Lines->Add(n);
}
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.