Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задачи с олимпиад ПОМАГИТЕ пожалуста

Alibi Знаток (297), закрыт 9 лет назад
Найди слово «программа»
Дан набор слов, в котором, удалив из него подряд идущие буквы и, может быть, знаки препинания и пробелы, можно найти слово «программа». Выведите те символы, которые нужно удалить, чтобы получить это слово.
Набор слов не превышает 255 символов русского и латинского алфавита, цифр, пробелов и знаков препинаний. Слово «программа» может быть как на русском, так и на английском языке (program), прописными или строчными буквами. Если слово найти не удалось, то ничего не выводить.
Например, в строке: «I am product Grandfather and my Mother. My name is Lena.» нужно удалить следующие символы: «I am duct ndfather and y Mother. My name is Lena.», чтобы получить слово «proGram».
Пример входных данных:
I am product Grandfather and my Mother. My name is Lena.
Пример выходных данных:
I am duct ndfather and y Mother. My name is Lena.

Привет, решение данных заданий на Pascal или С++. заранее спасибо !!!
Лучший ответ
Высший разум (1270989) 9 лет назад
Поправишь как надо:

program q175622941;
const
 rus = 'программа';
 eng = 'program';
var
 inp, tmp: string;

function ToLowerRusEng(s: string): string;
var
 i: integer;
begin
 for i := 1 to Length(s) do
  if s[i] in ['A'..'Z', 'А'..'Я'] then
   s[i] := Chr(Ord(s[i]) + 32);
 Result := s;
end;

function Exists(a, b: string): boolean;
var
 i: integer;
begin
 Result := True;
 for i := 1 to Length(a) do
  if (Pos(a[i], b) = 0) then
  begin
   Result := False;
   Break;
  end;
end;

function Work(srch, str0, str1: string): string;
var
 i: integer;
begin
 Result := '';
 i := 1;
 repeat
  if Length(srch) <> 0 then
  begin
   if (str0[i] <> srch[1]) then
    Result := Result + str1[i]
   else
    Delete(srch, 1, 1);
  end else
   Result := Result + str1[i];
  Inc(i);
 until (i > Length(str0)) ;
end;

begin
 ReadLn(inp);
 {inp := 'I am product GrandfaПрtheоr anГd mрy MoаthМerм. Myа name is Lena.';}
 tmp := ToLowerRusEng(inp);
 if Exists(rus, tmp) then
  WriteLn(Work(rus, tmp, inp));
 if Exists(eng, tmp) then
  WriteLn(Work(eng, tmp, inp));
 if (not Exists(eng, tmp)) and (not Exists(rus, tmp)) then
  WriteLn('Not found');
end.
AlibiЗнаток (297) 9 лет назад
Оооо спасибо !!!
AlibiЗнаток (297) 9 лет назад
У тебя есть ВК страница?
Высший разум (1270989) Есть, но здесь я её не афиширую, тк всё это в поисковую выдачу попадает.
Остальные ответы
Александр Искусственный Интеллект (291321) 9 лет назад
зачем оно тебе надо? олимпиец липовый...
Айша Коробайкызы Ученик (161) 7 лет назад
А что именно поправить надо в ответе ?
Похожие вопросы