Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Анализ слов

Автор: Soul 10.04.2007 1:25

Всем здрасьте. Условие задачи такое - Дана последовательность, имеющая в себе от 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 раз - не знаю. Подскажите, если можете)

Автор: volvo 10.04.2007 1:31

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

http://forum.pascal.net.ru/index.php?s=&showtopic=16463&view=findpost&p=96542