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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2009, 19:55   #1
drumerbaker
 
Регистрация: 15.05.2009
Сообщений: 8
По умолчанию функция pos

помогите, пожалуйста описать функцию pos-стандартная функция в delphi, но надо её описать, как она работает,надеюсь понятно изъяснился)),но при этом использовать copy и delete использовать нельзя.спасибо
drumerbaker вне форума Ответить с цитированием
Старый 15.05.2009, 21:03   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,544
По умолчанию

Код:
for j:=1 to length(source)-length(txt) do
begin
res:=true;
for jj:=1 to length(txt) do
begn
  if txt[jj]<>source[j+jj] then begin res:=false; break; end;
end;
if res then begin result:=j; break; end;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 15.05.2009, 21:11   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,544
По умолчанию

Код:
j:=1; jj:=1;
while j<length(source)-length(txt) do
begin
   if txt[jj]=source[j+jj] then jj:=jj+1 else begin j:=j+1; jj:=1; end;
   if jj>length(txt) then begin result:=j;break; end;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 16.05.2009, 15:48   #4
drumerbaker
 
Регистрация: 15.05.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
j:=1; jj:=1;
while j<length(source)-length(txt) do
begin
   if txt[jj]=source[j+jj] then jj:=jj+1 else begin j:=j+1; jj:=1; end;
   if jj>length(txt) then begin result:=j;break; end;
end;
но она не работает
Код:
  function poz(s,s1:string): integer;
  var i,j:integer;
begin
j:=1;
i:=1;
while j<(length(s)-length(s1)) do
  begin
    if s1[i]=s[i+j] then i:=i+1
      else begin
        j:=j+1;i:=1;
      end;
    if i>length(s1) then
    begin
      result:=j;break;


    end;
  end;
end;
var s,s1:string;

begin
readln(s);
readln(s1);
writeln(poz(s,s1));
readln;
drumerbaker вне форума Ответить с цитированием
Старый 16.05.2009, 18:20   #5
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Код:
  function poz(s,s1:string): integer;
  var i,j:integer;
begin
j:=1;
i:=1;
while j<(length(s)-length(s1)) do
  begin
    if s1[i]=s[i+j] then i:=i+1
      else begin
        j:=j+1;i:=1;
      end;
    if i>length(s1) then
    begin
      result:=j;break;


    end;
  end;
end;
var s,s1:string;

begin
readln(s);
readln(s1);
writeln(poz(s,s1));
readln;
Эта функция работает! В чем проблема?
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 16.05.2009 в 18:23.
MalCer вне форума Ответить с цитированием
Старый 16.05.2009, 21:52   #6
drumerbaker
 
Регистрация: 15.05.2009
Сообщений: 8
По умолчанию

блин, у меня эта функция постоянно выводит 4205540...на да ладно, вот написал, посмотрите,пожалуйста, как тута чё облегчить и из цикла выйти
Код:
 begin
readln(s);
readln(s1);
if length(s1)>length(s) then
  a:=0
  else
    begin
      d:=1;J:=1;I:=1;k:=1;
      while j<=(length(s)-length(s1))+1 do
        begin
          while k<=length(s) do
            begin
                if s1[i]=s[k] then
                begin
                i:=i+1;K:=k+1
                end
               else begin
                  j:=j+1;i:=1;d:=d+1;K:=d;
               end;
             if i>length(s1) then
             begin
               a:=j;writeln(a);break;{как выйти из главного цикла}
             end;
            end;

        end;
    end;
  { TODO -oUser -cConsole Main : Insert code here }
end.

Последний раз редактировалось drumerbaker; 16.05.2009 в 23:59.
drumerbaker вне форума Ответить с цитированием
Старый 17.05.2009, 15:52   #7
drumerbaker
 
Регистрация: 15.05.2009
Сообщений: 8
По умолчанию

всем спасибо, уже всё исправил))
drumerbaker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция Pos в Delphi Fantom Помощь студентам 8 04.05.2012 18:56
ошибка с POS Romer9999 Общие вопросы Delphi 5 18.02.2009 22:28
pos и copy zotox Помощь студентам 1 23.10.2008 21:13
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50