Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 17

На какую букву начинается больше слов в тексте Y

12.04.2012, 16:55. Показов 3104. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я занес слова текста в StringList
C++
1
2
3
4
5
TStringList *StringList = new TStringList();
TSysCharSet Tws,Tcs;
Tcs<<' '<<','<<'.'<<'!'<<'?';
AnsiString s=Edit1->Text;
ExtractStrings(Tcs,Tws,s.c_str(),StringList->Text);
И здесь уже ошибка в последней строчке:
[C++ Error] Unit1.cpp(45): E2034 Cannot convert 'AnsiString' to 'TStrings *'
[C++ Error] Unit1.cpp(45): E2342 Type mismatch in parameter 'Strings' (wanted 'TStrings *', got 'AnsiString')
Дальше, насколько я знаю, нужно в цикле проверить первый символ каждой строки, и каждую первую букву объявлять в char и int, когда вновь попадется такая же буква увеличивать int++.

Но никак не соображу как это сделать

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

На какую букву начинается больше слов в тексте Y (между словами может быть несколько пробелов). текст вводится в Edit
На какую букву начинается больше слов в тексте Y (между словами может быть несколько пробелов). текст вводится в Edit.

На какую букву начинается больше всего слов в заданном тексте
Составить программу для выяснения, на какую букву начинается больше всего слов в заданном тексте. Dim a, x, y, b, v, o As String, k,...

Определить, на какую букву начинается больше всего слов в заданном тексте
Мне надо составить программу для выяснения,на какую букву начинается больше всего слов в заданном тексте.Помогите пожалуйста,очень надо...

11
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
12.04.2012, 23:38
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString text = Edit1->Text + " ";
  Set<char, 0, 255> Razdelitel;
  Razdelitel << ' ' << '.' << ',' << ':' << ';' << '!' << '?' << '\r' << '\n';
  AnsiString temp;
  AnsiString symb;
  for(int i = 0; i < text.Length(); i++)
   {
     if(!Razdelitel.Contains(text[i + 1]))
       temp += text[i + 1];
     else
       {
         if(temp != "")
           symb += temp[1];
         temp = "";
       }
   }
  int max = 0;
  char res;
  for(int i = 0; i < symb.Length(); i++)
    {
      int count = 0;
      for(int j = 0; j < symb.Length(); j++)
        if(symb[j + 1] == symb[i + 1])
          count++;
      if(count > max)
        {
          max = count;
          res = symb[i + 1];
        }
    }
  ShowMessage("Наибольше слов в тексте начинается на букву \"" +
    AnsiString(res) + "\"");
}
1
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
13.04.2012, 09:07
по первой ошибке надо заюзать StringList->Strings вместо StringList->Text

Добавлено через 1 час 51 минуту
далее
C++
1
2
3
4
5
6
7
8
9
int max=0,k[255];
char c,res;
for(int i=0;i<StringList->Count;i++)
{
c=StringList->Strings[i][1];
k[c]++;
if(k[c]>max){max=k[c];res=c;}
}
ShowMessage("Больше всего слов в тексте начинается на букву \"" +AnsiString(res) + "\"");
0
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 17
14.04.2012, 13:22  [ТС]
AntonChik, вот по идее готовая программа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int max=0, k[255];
char c, res;
TStringList *StringList = new TStringList();
TSysCharSet Tws,Tcs;
Tcs<<' '<<','<<'.'<<'!'<<'?';
AnsiString s=Edit1->Text;
ExtractStrings(Tcs,Tws,s.c_str(),StringList->Strings);
for (int i=0;i<StringList->Cout;i++)
{
c=StringList->Strings[i][1];
k[c]++;
if(k[c]>max){max=k[c];res=c;}
}
ShowMessage("Áîëüøå âñåãî ñëîâ â òåêñòå íà÷èíàåòñÿ íà áóêâó \"" +AnsiString(res) + "\"");
StringList->Delete(0);
}
но в 9 строчке вновь подает ошибку:

[C++ Error] Unit1.cpp(26): E2193 Too few parameters in call to '_fastcall TStrings::Get(int)'
[C++ Error] Unit1.cpp(26): E2034 Cannot convert 'AnsiString' to 'TStrings *'
[C++ Error] Unit1.cpp(26): E2342 Type mismatch in parameter 'Strings' (wanted 'TStrings *', got 'AnsiString')
[C++ Error] Unit1.cpp(27): E2316 'Cout' is not a member of 'TStringList'
Добавлено через 2 минуты
Sergey-K , твой код работает, но помоему он слишком мудренный. Но щас попробую разобраться...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
14.04.2012, 14:03
C++
1
2
3
TStrings *mystrlist = new TStringList;
ExtractStrings(Tcs,Tws,s.c_str(),mystrlist);
for (int i=0;i<StringList->Count;i++) { // учим англицкий язык
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
14.04.2012, 21:09
Цитата Сообщение от Tepliar Посмотреть сообщение
Sergey-K , твой код работает, но помоему он слишком мудренный
Немного оптимизировал:
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString text = Edit1->Text + " ";
  Set<char, 0, 255> Razdelitel;
  Razdelitel << ' ' << '.' << ',' << ':' << ';' << '!' << '?' << '\r' << '\n';
  AnsiString temp, symb;
  int max = 0;
  char res;
  for(int i = 0; i < text.Length(); i++)
   {
     if(!Razdelitel.Contains(text[i + 1]))
       temp += text[i + 1];
     else
       {
         if(temp != "")
           {
             symb += temp[1];
             int count = 0;
             for(int j = 0; j < symb.Length(); j++)
               if(symb[j + 1] == temp[1])
                 count++;
             if(count > max)
               {
                 max = count;
                 res = temp[1];
               }
             temp = "";
           }
       }
   }
  ShowMessage("Наибольше слов в тексте начинается на букву \"" +
    AnsiString(res) + "\"");
}
0
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 17
15.04.2012, 18:50  [ТС]
LK, подправил, получилось так:
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)
{
  int max=0, k[255];
  char c, res;
  TStrings *MYStringList = new TStringList();
  TSysCharSet Tws,Tcs;
  Tcs<<' '<<','<<'.'<<'!'<<'?';
  AnsiString s=Edit1->Text;
  ExtractStrings(Tcs,Tws,s.c_str(),MYStringList);
  for (int i=0;i<MYStringList->Count;i++) {
    c=MYStringList->Strings[i][1];
    k[c]++;
    if (k[c]>max) {
      max=k[c];
      res=c;
    }
  }
  ShowMessage("Больше всего слов в тексте начинается на букву \""+
              AnsiString(res)+
              "\"");
}
программа работает, но не правильно решает :/
где опять допустил ошибку?
очень интересен этот способ решения задачи
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
15.04.2012, 19:14
я особо не вникал, может,
C++
1
c=MYStringList->Strings[i];
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
15.04.2012, 20:00
Цитата Сообщение от Tepliar Посмотреть сообщение
программа работает, но не правильно решает
Если char определён как signed (знаковый), то его диапазон значений составляет от −127 до 127
C++
1
k[c]++;
C++
1
k[-127]++;
Ошибка

Добавлено через 25 минут
Исправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int max = 0, k[255] = {0};
  char c, res;
  TStringList *MYStringList = new TStringList;
  TSysCharSet Tws, Tcs;
  Tcs << ' ' << ',' << '.' << '!' << '?';
  AnsiString s = Edit1->Text;
  ExtractStrings(Tcs, Tws, s.c_str(), MYStringList);
  for(int i = 0; i < MYStringList->Count; i++)
    {
      c = MYStringList->Strings[i][1];
      k[c + 127]++;
      if(k[c + 127] > max)
        {
          max = k[c + 127];
          res = c;
        }
    }
  delete MYStringList;
  ShowMessage("Больше всего слов в тексте начинается на букву \"" +
    AnsiString(res)+ "\"");
}
0
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 17
15.04.2012, 22:19  [ТС]
Sergey-K, неа... все равно не правильно вычисляет
0
 Аватар для Sergey-K
238 / 229 / 58
Регистрация: 27.10.2011
Сообщений: 249
15.04.2012, 22:46
Tepliar, "все равно не правильно вычисляет" - Больше всего слов в тексте начинается на букву "в"
1
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 17
16.04.2012, 14:06  [ТС]
Цитата Сообщение от Sergey-K Посмотреть сообщение
int max = 0, k[255] = {0};
оох, проглядел это..)
все работает, спасибо большое ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2012, 14:06
Помогаю со студенческими работами здесь

На какую букву начинается больше всего слов в заданном тексте (без массива!)
Составить программу для выяснения, на какую букву начинается больше всего слов в заданном тексте.

Составить программу для выяснения, на какую букву начинается больше всего слов в заданном тексте
Мне надо составить программу для выяснения,на какую букву начинается больше всего слов в заданном тексте.

На какую букву начинается больше слов в тексте Y (между словами может быть несколько пробелов)
Уважаемые знатоки напишите плиз лабу, а то тесты делать научился а вот со строками никак не получается(( Заранее благодарю! На какую...

Определить, на какую букву начинается большинство слов в заданном тексте
нужно определить на какую букву начинается большинство слов в заданном тексте, притом что должен быть ввод с клавиатуры. не особо...

Определить на какую букву начинается большое слов в заданном тексте
Определить на какую букву начанается большое слов в заданом тексте


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru