Помощь - Поиск - Пользователи - Календарь
Полная версия: Шаблоны
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Domen
В первой строке вводятся два шаблона через пробел
*abb*c? ab?cd
требуется вывести любую минимальную подcтроку - решение.
* - любое количество символов или пусто
? - любой один символ
Длина одного шаблона - до 100 символов
Если в ответе возникла ситуация что надо вывести ? то выводить символ 'a'
Если решений нет - то 'Impossible'
Пример 1:
Ввод:
a? ?b
Вывод:
ab
Пример 2:
Ввод:
a?f*b ab?gtb
Вывод:
abfgtb
mega_chok.gif Как решить не используя Units & Procedure.
мисс_граффити
Вот так нельзя? Осталось только процедуры засунуть непосредственно в программу.
А можно по их алгоритму и без процедур написать.
klem4
Вот что я наваял, надо проверять ...

Эти 2 теста прошла :

uses crt;

const

  letters = ['a'..'z'];

  a = 'a?f*b';
  b = 'ab?gtb';


function GetResult: String;
var
  i, j: Integer;
  result: String;
begin

  result := '';

  i := 1;
  j := 1;

  while (i <= Length(a)) and (j <= length(b)) do begin

    if (a[i] in letters) then begin

     if ((b[j] in letters) and (a[i] = b[j])) or (b[j] = '?') then begin
       result := result + a[i];
       inc(i);
       inc(j);
     end

      else if (b[j] = '*') then begin

        while (a[i] in letters) and (i <= length(a)) do begin
          result := result + a[i];
          inc(i);
        end;

        inc(j);

      end
       else begin
         inc(i);
         inc(j);
       end;

    end // a in letters
     else begin

        if (a[i] = '?') and (b[j] in letters) then begin
          result := result + b[j];
          inc(i);
          inc(j);
        end
         else  begin
           while (b[j] in letters) and (j <= length(b)) do begin
             result := result + b[j];
             inc(j);
           end;
           inc(i);
         end;

     end; // a not in letters

  end;

  GetResult := result;

end;

begin
  clrscr;
  writeln(GetResult);
  readln;
end.



единственное по поводу 'Impossible' надо подумать. Если етсь еще тесты, давай, сочинять лень smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.