3 / 3 / 1
Регистрация: 02.04.2012
Сообщений: 107
1

Найти частоту встречаемости следующих друг за другом символов "А", "В"и "С".

05.04.2012, 20:41. Показов 1166. Ответов 7
Метки нет (Все метки)

В заданном тексте найти частоту встречаемости следующих друг за другом символов "А", "В"и "С".

Я написала:
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button1Click(TObject *Sender)
{ int n;
  AnsiString S,   Delimiters;
  Delimiters="ABC";
  S=Edit1->Text;
  for(int i = 1;  i <= StrLen(S.c_str());  i++) {
    if(IsDelimiter(Delimiters,S,i))
      n++;
  }
  Edit2->Text=n;
но этот код считает все символы по одному 'A','B','C'; А мне надо чтобы счетчик считал только когда они друг за другом считать("АВС"). Что можно сделать?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2012, 20:41
Ответы с готовыми решениями:

MessageBox - чтобы вместо "Yes" и "No" показывало "Да" и "Нет"
Доброе время суток, как переделать int Key= Application-&gt;MessageBox(L&quot;Text&quot;, L&quot;Caption&quot;,...

Ищу исходник игры на С++, на подобие "Солитер", "Быки и коровы", "Змейка" и т. д
Нужен код игры на С++, на подобие &quot;Солитер&quot;, &quot;Быки и коровы&quot;, &quot;Змейка&quot; и т. д. Или ссылки на...

Открыть папку "мой компьютер", "панель управления", "program files"
Нужно открыть папку &quot;мой компьютер&quot;, &quot;панель управления&quot;, &quot;program files&quot;

Ошибки: "Failed to allocate SAVEmem" и ""bcc32" exited with code 1."
Помогите пожалуйста с этими ошибками. Такое не только у меня, полазил по разным форумам,...

7
237 / 228 / 58
Регистрация: 27.10.2011
Сообщений: 249
05.04.2012, 22:32 2
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str = Edit1->Text;
  int count = 0;
  for(int i = 0; i < str.Length() - 2; i++)
    if(AnsiString(str.c_str() + i).SetLength(3) == "ABC")
      count++;
  ShowMessage("Комбинация \"ABC\" встречается " + IntToStr(count) + " раз");
}
2
4032 / 2322 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.04.2012, 00:56 3
Ну, и более... экономичный и гибкий вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char wanted[] = "ABC";
char *str = Edit1->Text.c_str();
int count = 0;
for( int i = 0, n = 0, str_length = strlen(str), wanted_length = strlen(wanted); i < str_length; i++ ){
    if( str[i] == wanted[n] ){
        n++;
        if( n >= wanted_length ){
            count++;
            n = 0;
        }
    }
    else n = 0;
}
Edit2->Text = "Количество вхождений \"" + String( wanted ) + "\" = " + String( count );
1
LK
Заблокирован
06.04.2012, 01:04 4
c
C++
1
AnsiString.Pos("ABC")
было еще экономичнее
1
Now I Matrix
136 / 133 / 28
Регистрация: 01.03.2010
Сообщений: 223
06.04.2012, 14:36 5
Вот с Pos
C++
1
2
3
4
5
6
7
8
9
10
AnsiString str = Edit1->Text; //Строка в которой ищем
AnsiString wanted = "ABC"; //то, что ищем
int finded=0, pos = 0; //...
while((pos=str.Pos(wanted))!=0) //Пока находятся...
{
 str.Delete(1,pos+wanted.Length()-1); //Удаляем до результата
 pos = str.Pos(wanted); //Дальше ищем
 finded++; //Прибавляем кол-во найденных
}
Caption = finded; //Выводим сколько нашли
2
LK
Заблокирован
06.04.2012, 15:05 6
Интересно, а это работало бы ?
C++
1
2
3
4
5
6
7
8
9
AnsiString str = Edit1->Text; //Строка в которой ищем
AnsiString wanted = "ABC"; //то, что ищем
int i,finded; //...
for (i=1;i<str.Length();i++) {
  if (str.Pos(wanted)) {
    finded+=1; //Прибавляем кол-во найденных
  }
}
Caption = finded; //Выводим сколько нашли
0
Практикантроп
4682 / 2601 / 497
Регистрация: 23.09.2011
Сообщений: 5,581
06.04.2012, 15:21 7
Цитата Сообщение от LK Посмотреть сообщение
Интересно, а это работало бы
Нет, я думаю. Представьте: ABC в конце длинной строки, в цикле к этой последовательности подбираемся по символу, и при каждой итерации счетчик увеличивается. Matrica провильно поступает, удаляя "отработанную" часть.
0
3 / 3 / 1
Регистрация: 02.04.2012
Сообщений: 107
06.04.2012, 19:07  [ТС] 8
Спасибо! Доделала!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2012, 19:07

Помощь в написании контрольных, курсовых и дипломных работ здесь.

если введенная в Edit1 последовательность символов оканчивается на -y, то следует обрезать "у" и добавить "ily", а затем вывести в Label1
нужен цикл, реализующий вот что: если введенная в Edit1 последовательность символов оканчивается на...

Дана строка, найти слова "это" и заменить на "то"
сто лет c++ builder не открывала, AnsiString s; s=Edit1-&gt;Text; Edit2-&gt;Text=s. есть какая-нбудь...

Встречается ли среди k первых цифр дробной части вещественного числа "a" заданная цифра "b"?
Определить, есть ли среди k-первых цифр дробной части вещественного числа a заданная цифра b. ...

"E2090: Qualifier 'Date0' is not a class or namespace name" и "E2040: Declaration terminated incorrectly"
Подскажите пожалуйста,в чем ошибка?...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.