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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2010, 17:11   #1
Gray_Jagger
Пользователь
 
Аватар для Gray_Jagger
 
Регистрация: 04.04.2010
Сообщений: 29
По умолчанию Строки и слова: Паскаль

Помогите разобраться с процедурой "выковыривания" слов из текста.

Как примерно я это себе представляю: берем строку, читаем посимвольно, если символ является пробелом, то начинаем добавлять следующие после него символы в другую строку, и так до следующего пробела.

Код:
var a,b:string;
     i,j:integer;
begin
readln(a);
for i:=1 to length(a) do
 begin
  if a[i]=' ' then do
   begin
    j:=i until a[i]=' '
    b[i]:=a[j];
   end;
 end;
end.
С оператором цикла until работаю редко, так что скорее всего цикл с ним неправильный...
Пока будущее туманно, оно в твоих руках.
Gray_Jagger вне форума Ответить с цитированием
Старый 06.04.2010, 17:14   #2
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

есть хорошая функция pos которая позволяет не перебирать посимвольно
danekne вне форума Ответить с цитированием
Старый 06.04.2010, 17:15   #3
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Код:
a:string;
sub:string;
b:array[1..100] of string;
i,k:integer;
......
sub:='';k:=0;
for i:=1 to length(a) do
if a[i]=' ' and sub<>'' then begin inc(k);b[k]:=sub;sub:='';end;
else sub:=sub+a[i];
if sub<>'' then begin inc(k); b[k]:=sub;end;
Google2010 вне форума Ответить с цитированием
Старый 06.04.2010, 17:15   #4
Gray_Jagger
Пользователь
 
Аватар для Gray_Jagger
 
Регистрация: 04.04.2010
Сообщений: 29
По умолчанию

можно поподробнее?
Пока будущее туманно, оно в твоих руках.
Gray_Jagger вне форума Ответить с цитированием
Старый 06.04.2010, 17:17   #5
Gray_Jagger
Пользователь
 
Аватар для Gray_Jagger
 
Регистрация: 04.04.2010
Сообщений: 29
По умолчанию

ммм, так что делает процедура pos? мне не нужен код, мне важнее самому разобраться, чтобы потом мог применять
Пока будущее туманно, оно в твоих руках.
Gray_Jagger вне форума Ответить с цитированием
Старый 06.04.2010, 17:56   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

А кто же вам, друзья, сказал что слова разделяются только пробелом? А точка, запятая, двоеточие, и пр. знаки уже не в счет?
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 06.04.2010, 18:00   #7
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

процедура pos возвращает номер начала вхождения подстроки в строку. Следовательно pos(S,' ') вернет номер символа в строке, где первый раз входит пробел. копируем все от начала строки до этого символа в подстроку и из начальной строки удаляем аналогично
danekne вне форума Ответить с цитированием
Старый 06.04.2010, 18:01   #8
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Вот кусок моей старой программы, которая разбивает входной текстовый файл на слова
Код:
  while not Eof(flinp) do	{пока не конец входного файла}
    begin
      readln(flinp,Line);	{читаем данные из файла построчно}
      poz:=1;
      while poz<=Length(Line) do
        begin
          stword:='';
          pozbgn:=poz;
          while (poz<=Length(Line)) and (not(Line[poz] in prpchar)) do
            begin
              stword:=stword+Line[poz]; 	{выбираем очередное слово из строки файла}
              Inc(poz)
            end;
          Inc(poz);
          if stword=inword then	{если слово из строки равно слову-образцу}
            begin
              Delete(Line,pozbgn,Length(stword));	{удаляем это слово из строки}
              Inc(NumDel)
            end
        end;
      writeln(flout,Line);	{полученную строку (без слова-образца) записываем в файл}
      writeln(Line)		{ и выводим на экран}
    end;
Теперь
Const
prpChar=['.',',',':',';','?','!','-',' ']; {символы разделители}

stword - это слово из строки, т.е. то что нужно... Про остальное можно забыть...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 06.04.2010, 18:04   #9
Gray_Jagger
Пользователь
 
Аватар для Gray_Jagger
 
Регистрация: 04.04.2010
Сообщений: 29
По умолчанию

спасибо, теперь разобрался
Пока будущее туманно, оно в твоих руках.
Gray_Jagger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить строки при вхождении слова zver777 Помощь студентам 2 09.01.2010 15:55
удаление СЛОВА из строки LER44IKK Помощь студентам 5 20.11.2009 18:13
Слова (Паскаль) Паскалька^^ Помощь студентам 15 13.11.2009 19:46
Слова и строки в Delphi... Zibiv Помощь студентам 26 16.12.2008 15:57
Перенести слова из массива в строки Xardas Паскаль, Turbo Pascal, PascalABC.NET 2 04.05.2008 12:34