IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Анализ слов, Работа с текстом
Soul
сообщение 9.04.2007 21:25
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Всем здрасьте. Условие задачи такое - Дана последовательность, имеющая в себе от 1 до 30 слов, от 1 до 5 букв в каждом. Между соседними словами - запятая, после последнего - точка. Найти все слова, встречающиеся в последовательности 1 раз. Я сделал ввод текста и его анализ(соответствие условиям)
  Program Work;
 Uses CRT;
 const ColWord=30;
           LenWord=5;
           Line         =255;
           alf             ='abcdefghijklmnopqrstuvwxyz';
  Type
      Words       =1..ColWord;
      MasWord=Array [Words] of string [LenWord];
      Strok       =string[Line];
 Var
   d:string;
   chislo:array[1..100] of integer;

   Word : MasWord;
       Str : Strok;
        i, f, j : Byte;
     Flag : boolean;
       ch  : Char;

Procedure InputText(Var Str:Strok);
 Var text : strok;
 Begin
    text:='';   
    Writeln('Введите текст');
    Repeat
       ch:=ReadKey;

       if not(ord(ch)in[0..31, 33..45, 47..96, 123..255])then
            begin
               write(ch);   
               text:=text+ch;  
            end;
    Until ch='.';  
    Str:=text;
    Writeln
 End;

 Function Control(var f:Byte):boolean; Begin
    Control:=false;
    if f>ColWord then
      begin
         Writeln('Количество слов больше допустимого ',ColWord);
         Writeln('Анализ прериваеться.......');
         f:=f-1;
         Control:=true
      end;
 End;

 Procedure Text_Words(Str:Strok; Var Word:MasWord; Var f:Byte; 
                                 Var Flag:boolean);
 Var p, pt, i : Byte;
        text      : strok;
 Label L1;
 Begin
    f:=0;
    Flag:=True;
    text:=Str;
    Repeat
       p:=pos(',',text);
       While p=1 do
           Begin
               Delete(text,1,p);     
               p:=pos(',',text);
           End;
       if(p>1)then
          begin
                {Анализ длины слова [2..LenWord]}
             if (p-1>LenWord)or(p-1=1) then
                Begin
                   Writeln('Слово ',Copy(Text,1,p-1),' имеет ',p-1,
                           ' символов!!!! Оно игнорируется....' );
                   goto L1;
                End;
             f:=f+1;
             if Control(f) then exit;
             word[f]:=Copy(text,1,p-1);
       L1:
             Delete(text,1,p);
          end;
    Until (p = 0);
    pt:=pos('.',text);
       
    if (pos(' ',text)=0) and (pt>1) and (pt-1<=LenWord) and (pt-1>1) then
        begin
           f:=f+1;
           if Control(f) then exit;
           word[f]:=Copy(text,1,pt-1);
        end;

     if f=0 then
      begin
         Writeln('Не найдено слов, удовлетворяющих условие);
         Flag:=False;
      end
 End; 

Каким образом сделать поиск слов, встречающихся 1 раз - не знаю. Подскажите, если можете)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
volvo
сообщение 9.04.2007 21:31
Сообщение #2


Гость






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

Одномерные структуры(строковые параметры=))
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 8:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"