Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal]Найти буквы и вывести слова


Автор: CHITER 10.10.2008, 20:11
Найти в предложении все слова, в которых встречаются первые три буквы первого слова предложения.

Автор: volvo877 10.10.2008, 20:31
Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена! 

Автор: Rodman 10.10.2008, 20:44

M
Rodman
Модератор: Название темы должно содержать язык написания!

Автор: mr.Anderson 10.10.2008, 20:58
Rodman, просто до этого тема в паскале была, поэтому и язык не указан. smile Паскаль, поправьте.

Добавлено через 13 минут и 5 секунд
Решаю...

Автор: mr.Anderson 10.10.2008, 21:13
Готово!
Код

program SearchingOfLetters;

var
 s : String;  //предложение
 w : String;  //слово
 i : Integer; //счетчик
 l : Integer; //длина предложения
 x : Array [1..3] of Char; //массив букв, которые будем искать
 m : Integer; //с этого индекса начнем искать (первое слово пропускаем)

function findLetters(w: String): Boolean;
var
 j : Integer;
 k : Integer;
 u : Integer;
begin
 Result := False;

 u := Length(w);

 for j:=1 to 3 do
  for k:=1 to u do
   if (w[k] = x[j]) then //нашли букву
   begin
    findLetters := True;
    break;
   end;
end;

begin
 readln(s);

 for i:=1 to 3 do
  x[i] := s[i];

 l := Length(s);

 for i:=3 to l do
  if (s[i] = ' ') then
  begin
   m := i;
   break;
  end;

 //ищем уже от запомненного индекса, пропуская первое слово
 for i:=m to l do
 begin
  if (s[i] = ' ') then
  begin
   if (w <> '') then
    if (findLetters(w)) then
     writeln(w);

   w := '';
  end
  else w := w + s[i];
 end;

 readln;
end.


Автор: CHITER 10.10.2008, 22:25
благодарю! smile 

Автор: THandle 11.10.2008, 15:11
Хоть вопрос и решен, но вот мой вариант. ИМХО, более наглядный.

Код

program Project1;

var
  S: String;
  Position: Integer;
  W: String;
  F: String[3];
  StrLen: Integer;

function FindWord: String;
var
  tmpStr: String;
begin
  tmpStr := '';
  repeat
    Inc(Position);
    if S[Position] <> ' ' then
      tmpStr := tmpStr + S[Position];
  until (S[Position] = ' ');
  FindWord := tmpStr;
end;

begin
  ReadLn(S);
  Position := 0;
  S := S + ' ';
  StrLen := Length(S);
  W := FindWord;
  if Length(W) < 3 then
    Exit;
  F := Copy(W, 1, 3);
  repeat
    W := FindWord;
    if Pos(F, W) <> 0 then
      WriteLn(W);
  until Position >= StrLen;
  ReadLn;
end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)