![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
False |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть код программы, которая выводит
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.
Если кто-то сможет помочь, буду очень благодарен. |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 0:43 |