![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программирование с использованием строк. [D7, XP]
Boortwint © (2010-03-19 11:04:00)Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы с четным количеством символов.
Ума не приложу с чего надо начинать. С делфи дружу совсем немного и со стороками работать не доводилось. Перелопатил уйму книжек, но подсказки для решения этой задачи я не нашел.
Дайте, пожалуйста, алгоритм решения задачи. А то уже 2 дня на месте стою.
Boortwint (2010-03-19 13:24:00) [21]Тогда помогите, пожалуйста. Как провести проверку четности\нечетности количества элементов в группе.
Медвежонок Пятачок (2010-03-19 13:23:00) [22]Нет
И. Павел (2010-03-19 13:23:00) [23]
> Правильно?
Да :)
Boortwint (2010-03-19 13:20:00) [24]
> И. Павел © (19.03.10 13:15) [13]
> > Дана строка, состоящая из групп нулей и единиц.Граппа
> нулей, потом группа единиц и т.д. Я так сначала понял вопрос.
>
Теперь дошло. Спасибо. то есть получается что-то вроде "00000111111001111000111"
Должно выводить "111111001111", то есть группа с четными числом символов. Правильно?
Медвежонок Пятачок (2010-03-19 13:19:00) [25]А если нет пробелов, то как тогда разбить строку на "группу нулей и единиц"?
по границам групп. началу и концу
И. Павел (2010-03-19 13:15:00) [26]
> Дана строка, состоящая из групп нулей и единиц.
Граппа нулей, потом группа единиц и т.д. Я так сначала понял вопрос.
Boortwint (2010-03-19 13:13:00) [27]
> Медвежонок Пятачок © (19.03.10 11:25) [9]
> Допустим, есть строка "0000111 11011011 101011010"Дана строка,
> состоящая из групп нулей и единиц.Взаимоисключающие параграфы
А если нет пробелов, то как тогда разбить строку на "группу нулей и единиц"?
Плохиш (2010-03-19 11:31:00) [28]
> Медвежонок Пятачок © (19.03.10 11:25) [9]
Ладна, к словам не придирайся...
Плохиш (2010-03-19 11:31:00) [29]
> Boortwint © (19.03.10 11:16) [4]
> Меня интересует как после одной группы цифр можно продолжить
> цикл проверки остальных групп.
> Следующая группа: первый элемент 9 по счету, пробел - 17.
> 17-9=8. => количество четное.
>
> Подскажите, несу ли я бред и нужен другой алгоритм, или
> можно все же реализовать мой вышеописанный метод?
Можно, я не против.
Так бы сразу и говорил, что разрешения спрашиваешь :-)
Медвежонок Пятачок (2010-03-19 11:25:00) [30]Допустим, есть строка "0000111 11011011 101011010"
Дана строка, состоящая из групп нулей и единиц.
Взаимоисключающие параграфы
Медвежонок Пятачок (2010-03-19 11:21:00) [31]uses RegExpr;
procedure FindEvenGroups(const InputStr : string; AResultList : TStrings; LengthLimit: integer);
var i : integer;
begin
with TRegExpr.Create do
try
for i := 1 to LengthLimit do
begin
Expression := Format('0{%d}|1{%d}',[i,i]);
if (not Odd(i)) and Exec(InputStr) then AResultList.Add(Match[0]);
end;
finally
Free;
end;
end;
И. Павел (2010-03-19 11:20:00) [32]
> И. Павел © (19.03.10 11:16) [3]
+Если встретили пробел то
1. Если счетчик mod 2 = 0 то выводишь блок
2. Обнуляешь счетчик
3. Обгуляешь блок
И. Павел (2010-03-19 11:17:00) [33]
> Дана строка, состоящая из групп нулей и единиц
При чем тут пробелы?
И. Павел (2010-03-19 11:17:00) [34]И еще: Если это последний символ и счетчик mod 2=0, то выводишь блок
Boortwint (2010-03-19 11:16:00) [35]Это понятно все. Меня интересует вот какой вопрос:
Допустим, есть строка "0000111 11011011 101011010"
По моему мнению нужно создать алгоритм, который считает цифры с первого элемента до пробела. Первый пробел у нас на 8 месте. Получается 8-1=7 количество цифр - нечетное.
Меня интересует как после одной группы цифр можно продолжить цикл проверки остальных групп.
Следующая группа: первый элемент 9 по счету, пробел - 17. 17-9=8. => количество четное.
Подскажите, несу ли я бред и нужен другой алгоритм, или можно все же реализовать мой вышеописанный метод?
И. Павел (2010-03-19 11:16:00) [36]Алгоритм примерно такой:
Идешь по строке слева-направо, если текущий символ - первый, или отличен от предыдущего - то:
1. Если это не первый символ и счетчик mod 2 = 0 то выводишь блок.
2. Счетчик:=1.
3. Блок:=Текущий символ.
Иначе:
1. Блок:=Блок+текущий символ
2. Счетчик:=Счетчик+1
Anatoly Podgoretsky (2010-03-19 11:08:00) [37]А еще надо знать циклы, индексы, сравнения и условные операторы. Кроме того надо еще уметь и выводить на экран. Видишь какая сложная штука эта программирование.
Плохиш (2010-03-19 11:06:00) [38]String- это Array of char.