![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.05.2007
Сообщений: 12
|
![]()
(алгоритм)Подскажите пожалуйста способ как из теста длины в 200 символов выбрать слова длиной в 5 символов, причем эти слова не должны содержать букву "А". Буду очень благодарен.
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; temp, SourceString, ResultString: string; begin temp := ''; ResultString := ''; SourceString := Memo1.Text; for i := 1 to length(SourceString) do begin if SourceString[i] = ' ' then begin if length(temp) = 5 and pos(temp, 'A') = 0 then ResultString := ResultString + temp + ', '; temp := ''; continue; end; temp := temp + SourceString[i]; end; ResultString := copy(ResultString, 1, length(ResultString) - 2); end; Примерно так, здесь нет проверки на символы переноса строки, это добавьте сами.
Не надо ничего усложнять. Все достаточно тривиально.
Последний раз редактировалось Shuraken; 07.05.2007 в 13:54. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 07.05.2007
Сообщений: 12
|
![]()
это код. а в виде простого алгоритма можно пожалуйста показать?! Буду благодарен безмерно
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
Э-э-э, гхм...
Блок-схему что ли надо? Или просто объяснить как работает код? Код работает просто: в одной строковой переменной содержится исходная строка, в другую записываем нужные нам слова через запятую, к примеру иходная строка такая: 'Делфи ответ тематика режим сообщение студент подпись...'. Начинаем ее посимвольно проходить и записывать промежуточный результат. Как только мы увидели, что слово закончилось, то проверяем промежуточный результат: if length(temp) = 5 - длина слова ; pos(temp, 'A') = 0 - отсутствует буква "А". Если он совпадает (в текущем примере это будут слова Делфи ответ режим) то тогда записываем это слово в результирующую строку.
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 07.05.2007
Сообщений: 12
|
![]()
Спасибо. ИМенно то что мне нужно. Только подскажи пожалуйста поподробней в виде блок схемы как пройти данный этап : "Начинаем ее посимвольно проходить и записывать промежуточный результат. Как только мы увидели, что слово закончилось, то проверяем промежуточный результат"
А не затруднит ли вас помочь составить такой же алгоритм (блок схему ![]() Последний раз редактировалось o1ps; 08.05.2007 в 14:21. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
И как искать цифры?
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 26.04.2007
Сообщений: 143
|
![]()
Ну придется разве что объявлять символьный массив цифр типа:
numb : array[0..9] of string('0', '1', и так до '9'); и потом в цикле прокрутить это, если какой либо элемент массива попадается в тексте то... тело процедуры или функции... вот и всё!
Свободу клавиатурным самураям...
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; IsNum: boolean; temp, SourceString, ResultString: string; begin IsNum := false; temp := ''; ResultString := ''; SourceString := Memo1.Text; for i := 1 to length(SourceString) do begin if SourceString[i] = ' ' then begin if not IsNum then if length(temp) = 5 and pos(temp, 'A') = 0 then ResultString := ResultString + temp + ', '; temp := ''; IsNum := false; continue; end; temp := temp + SourceString[i]; IsNum := IsNum or SourceString[i] in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']; end; ResultString := copy(ResultString, 1, length(ResultString) - 2); end; Здесь лишь немного изменяется алгоритм. Проходим посимвольно строку и если встречается цифра, то устанавливаем флаг, что встретилась цифра и при проверке слова смотрим флаг. Если цифры не было, то проверяем остальные условия.
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 07.05.2007
Сообщений: 12
|
![]()
Можно вас пожалуйста попросить написать это не в виде кода, а блок схемы? Буду очень признателен, пожалуйста.
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
Можно узнать зачем? Ты не понимаешь, как это работает? Тогда и блок-схема не поможет. Я могу объяснить, это несложно.
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм | SunKnight | Работа с сетью в Delphi | 5 | 29.04.2008 15:24 |
Не могу сделать выборку с нужными полями, помогите чайнику! | kadet.rus | Microsoft Office Access | 2 | 26.04.2008 14:12 |
Помогите сделать выборку! | Adm | Microsoft Office Access | 1 | 06.02.2008 19:10 |