Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2007, 13:02   #1
o1ps
Пользователь
 
Регистрация: 07.05.2007
Сообщений: 12
По умолчанию Алгоритм на выборку из текста

(алгоритм)Подскажите пожалуйста способ как из теста длины в 200 символов выбрать слова длиной в 5 символов, причем эти слова не должны содержать букву "А". Буду очень благодарен.
o1ps вне форума Ответить с цитированием
Старый 07.05.2007, 13:52   #2
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 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.
Shuraken вне форума Ответить с цитированием
Старый 07.05.2007, 15:07   #3
o1ps
Пользователь
 
Регистрация: 07.05.2007
Сообщений: 12
По умолчанию

это код. а в виде простого алгоритма можно пожалуйста показать?! Буду благодарен безмерно
o1ps вне форума Ответить с цитированием
Старый 07.05.2007, 16:45   #4
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Э-э-э, гхм...
Блок-схему что ли надо? Или просто объяснить как работает код?
Код работает просто: в одной строковой переменной содержится исходная строка, в другую записываем нужные нам слова через запятую, к примеру иходная строка такая:
'Делфи ответ тематика режим сообщение студент подпись...'. Начинаем ее посимвольно проходить и записывать промежуточный результат. Как только мы увидели, что слово закончилось, то проверяем промежуточный результат: if length(temp) = 5 - длина слова ; pos(temp, 'A') = 0 - отсутствует буква "А". Если он совпадает (в текущем примере это будут слова Делфи ответ режим) то тогда записываем это слово в результирующую строку.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 08.05.2007, 14:14   #5
o1ps
Пользователь
 
Регистрация: 07.05.2007
Сообщений: 12
По умолчанию

Спасибо. ИМенно то что мне нужно. Только подскажи пожалуйста поподробней в виде блок схемы как пройти данный этап : "Начинаем ее посимвольно проходить и записывать промежуточный результат. Как только мы увидели, что слово закончилось, то проверяем промежуточный результат"
А не затруднит ли вас помочь составить такой же алгоритм (блок схему ) на поиск именно цифр в тексте?

Последний раз редактировалось o1ps; 08.05.2007 в 14:21.
o1ps вне форума Ответить с цитированием
Старый 08.05.2007, 14:31   #6
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

И как искать цифры?
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 08.05.2007, 15:17   #7
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

Ну придется разве что объявлять символьный массив цифр типа:

numb : array[0..9] of string('0', '1', и так до '9');
и потом в цикле прокрутить это, если какой либо элемент массива попадается в тексте то... тело процедуры или функции... вот и всё!
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 08.05.2007, 15:29   #8
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 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;

Здесь лишь немного изменяется алгоритм. Проходим посимвольно строку и если встречается цифра, то устанавливаем флаг, что встретилась цифра и при проверке слова смотрим флаг. Если цифры не было, то проверяем остальные условия.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 08.05.2007, 18:27   #9
o1ps
Пользователь
 
Регистрация: 07.05.2007
Сообщений: 12
По умолчанию

Можно вас пожалуйста попросить написать это не в виде кода, а блок схемы? Буду очень признателен, пожалуйста.
o1ps вне форума Ответить с цитированием
Старый 09.05.2007, 00:00   #10
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Можно узнать зачем? Ты не понимаешь, как это работает? Тогда и блок-схема не поможет. Я могу объяснить, это несложно.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм 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