| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Простенькая программа на Delphi со строками:) |
| Автор: Palladin 17.6.2006, 21:26 |
| Вообщем попросили сделать задачу на delphi: Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран самую короткую группу. Туплю я чёто здесь Код свой не показываю, стыдно очень за такое |
| Автор: Sunvas 18.6.2006, 00:35 |
Я правильно понял: строка 0000011110000001100000111111110000 самая короткая группа 4(номер группы) - 11(сама группа) так? |
| Автор: Palladin 18.6.2006, 01:58 |
| нет не совсем воод такой допустим 111111 00000 11111 0000000 1111111 00000 000000 11111 11111 так вот примерно найти минимальную группу и вывести куданить Добавлено @ 01:59 пробелами группы разделены это упрощает её ещё больше но тчо-то не выходит |
| Автор: Golden Hands 18.6.2006, 02:26 |
| На вскидку: Создаешь два массива размерности строки. Делаешь цикл прохода по строке, в котором сравниваешь текущий и предыдущий символ. Если значения равны, то увеличиваешь счетчик. Если различаются - обнуляешь счетчик (предварительно скинув в массивы значения счетчика и предыдущего символа (от элемента=номеру текущего символа-1)) и считаешь длину уже новой группы. И т.д. В массиве, где хранятся значения счетчика, находишь минимальный элемент и запоминаешь его номер (n) и значение (z). Берешь символ с позиции n в строке, и дублируешь его z раз. Все. Напиши сперва это, а потом оптимизируем. |
| Автор: CHIKIST 18.6.2006, 02:50 | ||
| записываешь строку в переменую a:string
|
| Автор: Sunr1se 18.6.2006, 13:21 | ||
| Я тут накатал функцию, с помощью которой можно решить задачу... В фунцию передаешь всю строку, а возвращает она самую маленькую группу.
|
| Автор: Palladin 18.6.2006, 14:41 |
| Чикист твой код не совсем верен, он находит строку, но к сожалению у твоего кода всегда минимальной является первая группа |
| Автор: Palladin 18.6.2006, 15:01 |
| Вообщем процедура тоже не пашет так как надо 1111 0000 1111 0000000 11 000 1 ответом должна быть еденица |
| Автор: Guedda 18.6.2006, 15:13 | ||
|
| Автор: Демо 18.6.2006, 15:27 | ||
|
| Автор: Sunr1se 18.6.2006, 16:17 |
| RooR, не знаю, я свой код тестил. Работал как часы |
| Автор: Palladin 18.6.2006, 17:12 |
| Гуеда твой пример пашет, сенкс всем большое, всё тема закрыта Добавлено @ 17:27 Соорри почти работает 11111111 00 111111111 чё за хня |
| Автор: Palladin 18.6.2006, 17:34 |
| Демо твой пример тоже не пашет, пишет ошибку [Error] Unit1.pas(81): Undeclared identifier: 'Tag' |
| Автор: Sunr1se 18.6.2006, 17:45 |
| Дело в том, что у TStringList нет свойства Tag. Оно есть только у наследников TComponent. |
| Автор: Zero 18.6.2006, 18:16 | ||
Хех...
|
| Автор: Palladin 18.6.2006, 18:30 |
| Zero рулит |
| Автор: Zero 18.6.2006, 18:33 |
| PS: упс... одна строка была не так, но щас всё исправлено... |