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

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

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

 
 Ответить  Открыть новую тему 
> Строки, Анализ слов в тексте
сообщение
Сообщение #1





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

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


Есть код программы, которая выводит

1) Слова состоящие только из латинских гласных букв(a,i,e,u,o);
2) Слова состоящие только из латинских согласных букв.

Нужно преобразовать код так, чтобы программа выводила

1) Слова, в которых первая буква присутствует только один раз;
2) Слова, в которых присутствуют только заглавные латинские буквы.

Я написал код так, что операция обработки текста выполняется с помощью точки, которая ставится в конце строки. Нужно сделать так, чтобы при вводе точка в конце текста не запрашивалась. Сколько не пробовал её убрать - не удалось. Лимит символов - 200. После окончания ввода программа выполняет необходимые операции только после нажатия на "Enter". Вводтятся только заглавные/строчные латинские буквы и пробелы.

program stranalyze;
uses crt;
var
str,str1,str2:string;
Arr,Arr1,Arr2:array [1..30] of string;
ch,ch1:char;
i,j,k,m,y:integer;
osh,osh1,osh2:boolean;
begin
clrscr;

{---Ввод(начало)---}
writeln('Введите предложение. Между словами минимум один пробел');
writeln('В конце предложения точка.');
read(str);
osh:=false;
k:=0;
if str[length(str)]<>'.' then
begin
osh:=True;
end;
{---Ввод(конец)---}

{---Удаление_лишних_пробелов(начало)---}
for i:=1 to Length(str) do
begin
if ((str[i]=' ') and (str[i+1]=' ')) or ((str[i]=' ') and (str[i+1]='.')) then
begin
Delete(str,i,1);
i:=1;
end;
end;
{---Удаление_лишних_пробелов(конец)---}

{---Деление_строки_на_слова(начало)---}
k:=0;
str1:=str;
m:=0;
j:=1;
for i:=1 to Length(str) do
begin
if (str[i]=' ') or (str[i]='.') then
begin
str2:=str1;
delete(str2,i,length(str2)-i+1);
delete(str2,1,m);
arr[j]:=str2;
j:=j+1;
k:=k+1;
m:=i;
end;
end;
{---Деление_строки_на_слова(конец)---}

{---Проверка_правильности_ввода(начало)---}
m:=1;
j:=1;
y:=1;
while m<=k do
begin
osh1:=true;
str1:=arr[m];
for i:=1 to Length(str1) do
begin
ch1:=str1[i];
if not((ch1='a') or(ch1='A') or(ch1='i') or
(ch1='I') or (ch1='o') or (ch1='O') or
(ch1='u') or (ch1='U') or
(ch1='e') or (ch1='E')) then osh1:=false;
end;
if osh1 then
begin
arr1[j]:=str1;
inc(j);
end
else
begin
osh2:=true;
for i:=1 to Length(str1) do
begin
ch1:=str1[i];
if ((ch1='a') or(ch1='A') or(ch1='i') or
(ch1='I') or (ch1='o') or (ch1='O') or
(ch1='U') or (ch1='u') or
(ch1='e') or (ch1='E')) then osh2:=false;
end;
if osh2 then
arr2[y]:=str1;
inc(y);
end;
m:=m+1;
end;
{---Проверка_правильности_ввода(конец)---}

{---Вывод(начало)---}
m:=1;
if not osh then
begin
writeln;
writeln('Слова состоящие только из латинских гласных букв(a,i,e,u,o)');
writeln;
while (m<=j) do
begin
writeln(arr1[m],' ');
m:=m+1;
end;
m:=1;
writeln('Слова состоящие только из латинских согласных букв');
writeln;
while (m<=y) do
begin
writeln(arr2[m],' ');
m:=m+1;
end;
end
else writeln('Неверный ввод');
{---Вывод(конец)---}
readln;
readln;
end.


Если кто-то сможет помочь, буду очень благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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