Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255

Как подсчитать вхождение каждого из символов в строку ListBox

06.05.2011, 16:25. Показов 4971. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, каким образом можно подсчитать количество каждого символа в строке ListBox!

Например:

Есть строка: abcdadcababcdadcabbb

Нужно посчитать сколько символов "а" в строке!

Thanks!)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2011, 16:25
Ответы с готовыми решениями:

Подсчитать вхождение каждого слова в подстроку
Такая задача: нужно подсчитать вхождение каждого слова в подстроку. Что-то сделал, но не верно int main(int argc, char** argv) { ...

Посчитать вхождение каждого слова в строку
Вынужден просить вашей помощи: необходимо написать программу, которая бы считала вхождение каждого слова в строку (сколько раз встречается...

Проверить вхождение каждого символа строки 1 в строку 2
Заданы две строки. Проверить вхождение каждого символа строки 1 в строку 2. Если какой-либо (первый слева) символ строки 1 не представлен...

24
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
13.05.2011, 19:55
Студворк — интернет-сервис помощи студентам
Infinity3000, только что специально скомпилил и проверил, в доказательство прислал
скриншот программы!!

Добавлено через 11 минут
Infinity3000, и самый главный вопрос,
пока мы тут ссоримся, я почему-то не подумал о самом главном,
а было ли у тебя так ???

C++
1
ListBox1->Items->Strings[0] = "abcdadcababcdadcabbb";


Я же тебе
C++
1
Strings[0]
для примера привёл
0
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
13.05.2011, 20:02  [ТС]
Цитата Сообщение от Maluda Посмотреть сообщение
Infinity3000, только что специально скомпилил и проверил, в доказательство прислал
скриншот программы!!

Добавлено через 11 минут
Infinity3000, и самый главный вопрос,
пока мы тут ссоримся, я почему-то не подумал о самом главном,
а было ли у тебя так ???

C++
1
ListBox1->Items->Strings[0] = "abcdadcababcdadcabbb";


Я же тебе
C++
1
Strings[0]
для примера привёл
У меня было все правильно!!!!

Дело в том что в ListBox у меня были русские символы! Поэтому и возвращало нуль!))

А так все четко молодец! (Когда латиница))) Спасибо!))

Но вариант LK мне больше нравиться!)) Без обид!))))
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
13.05.2011, 20:37
Infinity3000, да какие обиды, просто давай немного теории, ладно?

C++
1
UnicodeString sTestString = "ababababab";
sTestString.SubString(1,1) - возвращает UnicodeString "a" (что равносильно 'a' '\0')
sTestString[1] - возвращает WideChar 'a'

То есть по сути, что получается?

Ты сравниваешь "a" с 'a',
что же тебя спасает от ошибки, а спасает тебя перегруженный оператор сравнения
C++
1
bool __fastcall operator ==(const UnicodeString& rhs) const;
Что в таком случае происходит?

sTestString.SubString(1,1)==UnicodeStrin g('a')
У тебя происходит сравнение "a" с "a", то есть ты сравниваешь строку со строкой,
а не символ с символом.
Надеюсь это понятно.

То есть, если тебе надо найти все вхождения символа,
надо сравнивать sTestString[i]=='a'
Буду рад, если ты поймёшь, то что я написал.
1
 Аватар для Infinity3000
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
15.05.2011, 14:53  [ТС]
Вот есть код!
C++
1
float mas[4] = {0};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
float aCount = 0, bCount = 0, cCount = 0, dCount = 0; //количество символов
int len, cnt; 
float Kol = 0; //количество символов в строке
float aKol = 0, bKol = 0, cKol = 0, dKol = 0; //Вероятности
 
  AnsiString str;
  cnt = ListBox1->Items->Count;
  for (int i = 0; i < cnt; i++)
  {
  len = ListBox1->Items->Strings[i].Length();
  {
    for (int j = 1; j <= len; j++)
    {
      Kol++;
      str = ListBox1->Items->Strings[i];
      if (str.SubString(j,1) == 'a')
      {
        aCount++;
      }
      if (str.SubString(j,1) == 'b')
      {
        bCount++;
      }
      if (str.SubString(j,1) == 'c')
      {
        cCount++;
      }
      if (str.SubString(j,1) == 'd')
      {
        dCount++;
      }
    }
    }
}
aKol = aCount / Kol;  //Вероятность появления символа "a"
bKol = bCount / Kol;  //Вероятность появления символа "b"
cKol = cCount / Kol;  //Вероятность появления символа "c"
dKol = dCount / Kol;  //Вероятность появления символа "d"
Подскажите как правильно поместить эти вероятности в массив??
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
15.05.2011, 15:52
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// определяем функцию, которая считает вероятность появления символа в строке
const double GetCharExpactance(const AnsiString &sText, const char &chVal) {
    unsigned iCount;
    for (int i = 1; i <= sText.Length(); i++) {
        if (sText[i] == chVal) {
            iCount++;
        }
    }
    double dCharExpectance = 0.0;
    if (sText.Length() != 0.0) {
        dCharExpectance = (double)iCount / (double)sText.Length();
    }
    return dCharExpectance;
}
#include <map>
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
    // определяем контейнер, который будет хранить вероятности
    typedef std::map<char, double>TMapChDbl;
    TMapChDbl MapChDbl;
 
    // перечень символов, наличие которых будем проверять
    char chArrayOfSymbols[] = {'a', 'b', 'c', 'd'};
 
    // заполнение контейнера
    for (int i = 0; i < ARRAYSIZE(chArrayOfSymbols); i++) {
        MapChDbl[chArrayOfSymbols[i]] = GetCharExpactance(ListBox1->Items->Text,
            chArrayOfSymbols[i]);
    }
 
    // доступ к любому элементу
    ShowMessage(MapChDbl['c']);
 
    // опять же, можно перебирать элементы контейнера
    for (TMapChDbl::iterator it = MapChDbl.begin(); it != MapChDbl.end(); ++it)
    {
        ShowMessage("Вероятность появления символа " + AnsiString(it->first) +
            " составляет " + AnsiString(it->second));
    }
 
}
// ---------------------------------------------------------------------------
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2011, 15:52

Проверить вхождение каждого символа строки 1 в строку 2
Заданы две строки. Проверить вхождение каждого символа строки 1 в строку 2. Если какой либо (первый слева) символ строки 1 не представлен в...

Вхождение символов в строку
есть например строка: 51618641313518132158800188, необходимо проверить есть ли в этой строке цифры 1,2,3 как это решить?

Предикат, который продублирует вхождение каждого символа в строку
Создайте предикат, который продублирует вхождение каждого символа в строку.

Подсчитать общее вхождение в строку латинских букв
Дана строка символов. Подсчитать общее вхождение в строку латинских букв. Test: input: aa!220$G&quot;1o325A+5468.7 Z 5.!zz output: 8

Подсчитать все вхождение «abc» в строку и их удалить.
Дана строка, содержащая сорок латинских букв. Подсчитать все вхождение «abc» в строку и их удалить. Вывести на экран два варианта...


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

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

Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru