Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для serg6789
4 / 6 / 1
Регистрация: 14.01.2019
Сообщений: 131
Builder 6

Самая длинная строка в TStringList

15.04.2019, 07:13. Показов 2619. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро!
что есть:
1. TStringList *krsod= new TStringList();
в этом списке есть строки и эти строки будут еще добавляться (уже сделал)
Есть определенная строка
C++
1
AnsiString dlnach="Краткое содержание";
ee размер я узнаю вот так:
C++
1
int dl=dlnach.Length();
затем я из списка беру строки и сравниваю с dlnach
делаю вот так:
C++
1
2
3
4
5
6
7
8
 for (int a=0; a<krsod->Count-1; a++)
{
if (krsod->Strings[a].Length()>dl)
{
String str1=krsod->Strings[a].Length();
 
StringGrid1->ColWidths[0]=str1.Length()*10;
}
и если строка больше dl то записываю в переменную
а затем размер найденной строки применяю в StringGridе
как размер столбца.
Внимание вопрос: Как сначала определить самую длинную строку в списке?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2019, 07:13
Ответы с готовыми решениями:

Какая строка в массиве встретится раньше: самая короткая или самая длинная
1. Создай массив строк. 2. Добавь в него 10 строчек с клавиатуры. 3. Узнай, какая строка в массиве встретится раньше: самая короткая...

Сформировать строки таким образов, что бы первой была самая короткая строка, а последней самая длинная
задан строка. сформировать строки таким образов что бы первой была самая короткая строка а последней самая длинная (все остальные строки...

Самая длинная строка в файле - как найти
Кто-нибудь объясните, пожалуйста, по подробнее как находить в текст. файле длину самой длинной строки?Буду благодарна

6
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
15.04.2019, 08:00
Лучший ответ Сообщение было отмечено serg6789 как решение

Решение

1. Сделать копию СтрингЛиста,
2. отсортировать ее (копию) по возрастанию длин строк,
3. получить длину последней строки.

Добавлено через 27 минут

Не по теме:

Цитата Сообщение от serg6789 Посмотреть сообщение
for (int a=0; a<krsod->Count-1; a++)
Этак у Вас последняя строка СтрингЛиста в проверку не попадает...


Примерно вот так можно это организовать (при условии, что Ваш СтрингЛист krsod уже создан и заполнен)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <Math.hpp>
#include <memory>
 
int __fastcall LenSort(TStringList *L, int i1, int i2)
{
  return CompareValue(L->Strings[i1].Length(), L->Strings[i2].Length());
}
...
 
std::auto_ptr<TStringList> tmp (new TStringList);
tmp->Assign(krsod); //делаем копию Вашего СтрингЛиста
tmp->CustomSort(LenSort); //сортируем, используя описанную выше функцию
int MaxLength = tmp->Strings[tmp->Count - 1].Length(); //получаем значение максимальной длины строки в списке
1
 Аватар для serg6789
4 / 6 / 1
Регистрация: 14.01.2019
Сообщений: 131
15.04.2019, 09:42  [ТС]
D1973,
Цитата Сообщение от D1973 Посмотреть сообщение
tmp->CustomSort(LenSort);
на этой строчке при компиляции ошибки следующие
[C++ Error] Unit2.cpp(481): E2034 Cannot convert 'int (_fastcall * (_closure )(TStringList *,int,int))(TStringList *,int,int)' to 'int (_fastcall *)(TStringList *,int,int)'
[C++ Error] Unit2.cpp(481): E2342 Type mismatch in parameter 'Compare' (wanted 'int (_fastcall *)(TStringList *,int,int)', got 'void')
подскажите пожалуйста в чем проблемка?

Добавлено через 23 минуты
Разобрался, в Tform добавлял
0
Модератор
 Аватар для D1973
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
15.04.2019, 11:07
Цитата Сообщение от serg6789 Посмотреть сообщение
Разобрался, в Tform добавлял
Да, эта функция не должна принадлежать классу формы.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.04.2019, 11:14
Лучший ответ Сообщение было отмечено serg6789 как решение

Решение

На фиг сортировать список (да еще и делать его копию), если можно просто пробежать один раз по содержимому, и найти максимальную длину?

C++
1
2
3
4
5
6
7
int maxLen = 0;
for (int i=0; i < krsod->Count; i++)
{
    int L = krsod->Strings[i].Length();
    if (L > maxLen) maxLen = L;
}
StringGrid1->ColWidths[0] = maxLen*10;
1
15.04.2019, 11:22

Не по теме:

Цитата Сообщение от volvo Посмотреть сообщение
если можно просто пробежать один раз по содержимому
Да не захотелось через цикл в явном виде делать... :D

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.04.2019, 11:24
Ну разумеется, пускай в неявном виде будет возможно квадратичный алгоритм, да еще выделение/удаление памяти... Логично, чо...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2019, 11:24
Помогаю со студенческими работами здесь

Форматирование таблицы если не известна самая длинная строка
Добрый день. Что нужно делать в таком случае, чтобы таблица оставалась всегда ровной? Для примера: cout &lt;&lt;...

Дан текстовый файл и строка s. Если самая длинная строка файла не совпадает со строкой s, то строку s дописать в файл
Дан текстовый файл и строка s. Если самая длинная строка файла не совпадает со строкой s, то строку s дописать в файл

Двумерный массив: строка, в которой находится самая длинная серия одинаковых элементов
Дана целочисленная прямоугольная матрица. Определить: 1) Количество столбцов, содержащих хотя бы один нулевой элемент. 2)Номер...

Фамилия ученика,рост,оценка за 3 занятия. а) средняя оценка по каждому предмету общего класса б) самая длинная и самая
Фамилия ученика,рост,оценка за 3 занятия. а) средняя оценка по каждому предмету общего класса б) самая длинная и самая короткая по...

Самая длинная последовательность
с клавиатуры вводится одно число(n). Не более 10^5,дальше вводиться некая последовательность длинной n.Найти самую длинную...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru