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

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

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

 
 Ответить  Открыть новую тему 
> Анализ слов, Работа с текстом
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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

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

 





- Текстовая версия 23.09.2020 17:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name