Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Pascal] Помогите найти ошибки (выборка слов из текста)

13K
28 мая 2007 года
*alt
36 / / 12.04.2007
Пусть дан текст. Текст состоит из слов, разделённых пробелами.
Слово - последовательность латинских букв. Напечатайте слова текста, имеющие
нечетный номер, в которых нет ни одной повторяющейся буквы.

Вот решение (но не работает, алгоритм вроде правильный), помогите найти ошибки (по возможности исправьте)
Код:
type
   lat=set of 'a'..'z';

var txt:string;

{Ввод текста}
procedure read_txt (var txt : string);
var  k:byte;
begin
  readln(txt);
  k:=pos('.',txt);
  if k>0 then
    delete(txt, k, length(txt)-k+1 );
end;

{пропуск пробелов}
procedure empty (var txt:string; var i:integer);
var ok:boolean;
begin
  ok:=true;
  while ok and (i<=length(txt)) do
    if txt=' ' then
      i:=i+1
    else
      ok:=false;
end;

{Взять следующее слово }
function NextWords(txt:string; var i:integer):string;
var word:string;
    ok:boolean;
begin
  empty(txt,i);
  word:=''; ok:=false;
  while not ok and (i<=length(txt)) do
    if (txt<>' ')  then
      begin
        word:=word+txt;
        i:=i+1;
      end
    else
      ok:=true;
   nextwords:=word;
end;

{Проверка}
function find(word:string):boolean;
var i:integer;
    mn:lat;
begin
  i:=1; mn:=[]; find:=true;
  while (i<=length(word)) and find(word) do
      if word in mn then
        find:=false
      else
        begin
          mn:=mn+[word];
          i:=i+1;
        end;
end;

{процедура поиска и печати нужных слов}
procedure CheckWords(txt:string);
var i:integer;  wrd:string;
begin
  i:=1;
  while(i<=length(txt)) do
    begin
      wrd:=NextWords(txt, i);
      if (wrd<>'') and odd(i) and find(wrd) then
        writeln(wrd)
      else
      i:=i+1;
    end;
end;

begin

  writeln('Введите текст:');
  read_txt (txt);
  writeln ('Искомые слова:');
  CheckWords(txt);
  readln;
end.
622
28 мая 2007 года
nilbog
507 / / 19.12.2006
ну первое что заметил -
вы проверяете нечетность odd(i) - а i счетчик букв а не слов
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог