Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Программирование с использованием строк. [D7, XP]


Страницы:   1 2

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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо