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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 20:30   #1
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию Delphi: строковые операции

Дана текстовая строка. Написать подпрограммы, выполняющие следующие действия:
* Подсчет количества слов в строке
* Подсчет количества цифр в строке
* Определение десятичного числа, которому соответствует строка, если она представляет запись этого числа в шестнадцатеричной системе
* Проверку соответствия содержимого строки правилам записи идентификаторов языков программирования.

В общем вот... У меня мало соображений по этому поводу, т.к. к сожалению я раньше не сталкивалась с такого рода задачами...
Помогите понять что нужно сделать и какие функции используются...
Sianessa вне форума Ответить с цитированием
Старый 20.04.2009, 21:41   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Подсчет количества слов в строке можно так:

Код:
function CountWords(const s: string; Delimiters: TSysCharSet): integer;
var
  wStart, wLen: integer;
begin
  Result := 0;
  wStart := 1;
  while WordScan(s, wStart, wLen, Delimiters) do
  begin
    inc(Result);
    inc(wStart, wLen);
  end;
end;
Пример использования:
Код:
WordCount := CountWords('This is a sample', [' ']);
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 20.04.2009, 21:56   #3
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

что-то как-то не совсем понятно, как оно работает...
Sianessa вне форума Ответить с цитированием
Старый 20.04.2009, 22:36   #4
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Так же можно применить алгоритм Бойера-Мура:
Код:
function Find(const S, P: string): Integer;
var
  i, j: Integer;
begin
  Result := 0;
  if Length(P) > Length(S) then
    Exit;
  for i := 1 to Length(S) - Length(P) + 1 do
    for j := 1 to Length(P) do
      if P[j] <> S[i + j - 1] then
        Break
      else if j = Length(P) then
      begin
        Result := i;
        Exit;
      end;
Функция Find ищет подстроку P в строке S и возвращает индекс первого символа подстроки или 0, если подстрока не найдена.
Этот алгоритм должен быть тебе понятен, т.к. тут нет ни чего сложного
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 20.04.2009, 23:11   #5
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Хм, спасибо, попробую...
Sianessa вне форума Ответить с цитированием
Старый 21.04.2009, 17:36   #6
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

В общем у меня ничего не выходит ((
Мож я чёт не так делаю =__=
Sianessa вне форума Ответить с цитированием
Старый 21.04.2009, 18:05   #7
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
Радость

Тупо, но зато понятно. Сколько пробелов в строке столько и слов + 1. Если конечно в середине предложения не наставленно несколько пробелов подряд, то всё работает (чтобы работало и так мне писать лень).

Код:
function GetWordsCount(s : string) : integer;
var
  i : integer;
begin
  result := 0;
  s := Trim(s);
  for i := 1 to Length(s) do
    if s[i] = #32 then
      inc(result);
  if result > 0 then inc(result);
end;
NotProCoder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковые переменные NightFire Помощь студентам 1 23.03.2009 06:20
Задача на строковые функции в Delphi... Leprechaun Помощь студентам 2 24.12.2008 18:01
Строковые процедуры Cannibal Паскаль, Turbo Pascal, PascalABC.NET 2 29.05.2008 12:42
Строковые операции (Virtual Pascal) Vitek220 Помощь студентам 1 02.05.2008 18:11
Вопрос. Операции с аудио/видео в Delphi Air Мультимедиа в Delphi 6 24.02.2008 06:19