Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
 Аватар для Марта_киска
-2 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 76

Работа со строками

29.05.2010, 17:10. Показов 3044. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите плз


Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы b
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.05.2010, 17:10
Ответы с готовыми решениями:

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

Работа со строками, заполнить компоненты строками из файла
Привет! Нужна помощь в заполнении формы В общем, есть форма отправки письма. У нее есть 2 функции, сохранить письмо и открыть письмо (на...

Работа со строками(операции над строками)
Пусть дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами...

14
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
29.05.2010, 18:14
Марта_киска, Приблизительно так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   AnsiString str = "Begin integer name compare beeline"; // Наша строка в примере
   int count = 0; // Счётчик слов начинающихся на 'b'
   TSysCharSet chSpace;
   chSpace<<' ';
   TStringList *TokenList = new TStringList();
 
   ExtractStrings(chSpace, chSpace, str.c_str(), TokenList);
 
   for(int i = 0; i < TokenList->Count; i++){
      if(TokenList->Strings[i].SubString(1, 1) == "b" || TokenList->Strings[i].SubString(1, 1) == "B")
         count++;
     }
 
   ShowMessage(String("Количество слов начинающихся на 'B' или 'b' = ") + count);
   delete TokenList;
}
//---------------------------------------------------------------------------
...
2
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
29.05.2010, 18:53
Maestro, можно чуть-чуть по-другому:
C++
1
2
3
4
5
6
AnsiString str = "Begin big big compare beeline"; // Íàøà ñòðîêà â ïðèìåðå
TStringList *lst=new TStringList;
lst->Text=StringReplace(str," b","\n",TReplaceFlags()<<rfReplaceAll);
lst->Add(StringReplace(str," B","\n",TReplaceFlags()<<rfReplaceAll));
ShowMessage("Количество слов начинающихся на 'B' или 'b' = " + String(lst->Count-1));
delete lst;
2
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
29.05.2010, 19:55
Цитата Сообщение от Ni'Tan Посмотреть сообщение
lst->Add(StringReplace(str," B","\n",TReplaceFlags()<<rfReplaceAll ));
Ni'Tan, эээ... А тут в начале пробел лишний - " B" и нужно также учитывать и твой случай " B" как, например имя с большой буквы - get Bob.

StringReplace работает дольше чем ExtractStrings.
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
29.05.2010, 20:02
Цитата Сообщение от Maestro Посмотреть сообщение
Ni'Tan, эээ... А тут в начале пробел лишний - " B" и нужно также учитывать и твой случай " B" как, например имя с большой буквы - get Bob.
Так я то делю строку по словам начинающимся с B, b. Значит заменять нужно "пробел"+ B, b, а не то будет заменять и в середине и в конце слов. Или я "туплю"?
Цитата Сообщение от Maestro Посмотреть сообщение
StringReplace работает дольше чем ExtractStrings.
В данном случае, разница ничтожна!
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
29.05.2010, 20:35
Ni'Tan, Это я не так объяснил. Имел ввиду первую строку первое слово, с заглавной буквы - B. Но тут уже понял, что ты его просто не обрабатываешь, например, обработав такую строку.
Code
1
AnsiString str = "Cegin big big compare beeline"; // Наша строка в примере
у тебя выдаст 4 слова начинается на B или b А их только три. big big beeline
1
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
29.05.2010, 21:02
Да, вы правы.

Добавлено через 21 минуту
Maestro, вот альтернативный способ:
C++
1
2
3
4
5
6
7
8
AnsiString str = "Begin big big compare beeline";
 int c=0;
 for(int i=1;i<str.Length();i++){
    if( (str[i]==' ') && ( (str[i+1]=='B') || (str[i+1]=='b') ) )c++;
 }
 
 if( (str[1]=='B') || (str[1])=='b')c++ ;
 ShowMessage(c);
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
29.05.2010, 21:23
Ni'Tan,
1
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
29.05.2010, 21:54
Ni'Tan, наверное лучше написАть так
C++
1
2
3
4
5
AnsiString str = "as big big compare beeline";
int c = 0;
for (int i = 1; i < str.Length(); i++)
  if (str[i] == ' ' && UpCase(str[i + 1]) == 'B' || UpCase(str[i]) == 'B' && i == 1) c++;
ShowMessage(c);
2
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
29.05.2010, 22:00
Inadequate, Точно, можно приводить регистр букв к нижнему или верхнему и проверять соответственно, и как это я мог об этом забыть?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
29.05.2010, 22:06
Maestro, это да, но встроенные подойдут только для латиницы. Для русских букв нужно будет писАть свою функцию
0
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
29.05.2010, 22:24
Inadequate, Но почему? Вроде работает с кирилицей

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str = "Анна, Снегина - и вы мне ещё ананас предлагаете?"; // Наша строка в примере
   int count = 0; // Счётчик слов начинающихся на 'b'
   TSysCharSet chSpace;
   chSpace<<' ';
   TStringList *TokenList = new TStringList();
 
   ExtractStrings(chSpace, chSpace, str.c_str(), TokenList);
 
   for(int i = 0; i < TokenList->Count; i++){
      if(TokenList->Strings[i].LowerCase().SubString(1, 1) == "а")
         count++;
     }
 
   ShowMessage(String("Количество слов начинающихся на 'А' или 'а' = ") + count);
   delete TokenList;
 
}
//---------------------------------------------------------------------------
...
1
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
29.05.2010, 22:47
Ооуу, пардон, я когда писАл пост #11 думал, что я в другом разделе
0
29.05.2010, 22:58

Не по теме:

Inadequate, О_о А это вас часто бывает?:jokingly:

0
29.05.2010, 23:06

Не по теме:

Ni'Tan, ну у меня уже 23 часа, я малость устал, отвечал сразу в нескольких, вот и потерялся чуток :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2010, 23:06
Помогаю со студенческими работами здесь

Задание по темам: ООП, исключения, работа со строками (возможно применение коллекций List), работа с компоновщиком
ТЯЖЕЛО РАБОТАТЬ С КОМПОНОВЩИКОМ. БУДУ РАД ВАШИМ ОТВЕТАМ. 1. Ознакомиться с принципом работы структурного шаблона проектирования...

Работа со строками
Подскажите, как реализовать следующую задачу, мне нужно: 1) Создать форму с текстовой областью и текстовым полем. 2) Вывести всю строку...

Работа со строками
&quot;users&quot; { &quot;76561198836988996&quot; { &quot;AccountName&quot; &quot;login&quot; &quot;RememberPassword&quot; &quot;1&quot; &quot;mostrecent&quot; &quot;1&quot; ...

Работа со строками
Знатоки подскажите пожалуйста, как в VBA вывести строку начинающуюся с конкретно заданного символа(не путать с номером позиции символа в...

Работа со строками
помогите пожалуйста. вот такие условия примерно Даны 2 текста. Найти одно из общих слов, встречающихся в текстах. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru