![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
d1monn |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Dima Репутация: ![]() ![]() ![]() |
Уважаемые знатоки! Внимание, нужно написать программу, которая вводит строку символов и выводит на экран сначала предложення, которые начинаются с однобуквенных слов, а потом все остальные. Заранее спасибо! Очень на вас надеюсь.
Сообщение отредактировано: d1monn - |
Bokul |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата выводит на экран сначала предложення Что считать предложением? Свои наработки есть? В чем возникли затруднения? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
d1monn |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Dima Репутация: ![]() ![]() ![]() |
program Project2;
{$APPTYPE CONSOLE}
const MLA=['A'..'Z','a'..'z'];
MRZ=['.','!'];
var l,i,k,zzr,ps:integer; s:string;
begin
readln(s);
l:=length(s);
i:=1;
k:=0;
while i<=l do begin
zzr:=0;
while (i<=l) and not (s[i] in MLA) do begin
if s[i] in MRZ then inc(zzr);
inc(i);
end;
if i<=l then begin
k:=k+1;
ps:=i;
while (i<=l) and (s[i] in MLA) do i:=i+1;
if ((k=1) or (zzr>0)) and (i-ps=1) then writeln(copy(s,ps,1));
if
end;
end;
write(k);
readln;
readln;
end.
|
Bokul |
![]()
Сообщение
#4
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
А комментарии к этому можно?
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
d1monn |
![]()
Сообщение
#5
|
![]() Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Dima Репутация: ![]() ![]() ![]() |
S- строка
MLA- множество лат. алфавита MRZ- множество знаков препинания k- кол-во слов в тексте ps- первое слово В итоге у меня выводится только первое однобуквенное слово предложения и кол-во слов в тексте. Надо изменить исходник так, чтобы сначала шли предложения, которые начинаются с однобуквенных слов, а потом остальные предложения текста. Пример такого предложения: В лесу родилась елочка. За критерий окончания предложения взято . ! , Помогите мне пожалуйста! |
Bokul |
![]()
Сообщение
#6
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Вот
![]()
const
WordSeparators=[' ',',',';'];
SentenceSeparators=['?','.','!'];
Function FindFirstWord(s:string):string;
var i:byte;
buf:string;
begin
buf:='';
for i:=1 to length(s) do
begin
if (s[i] in WordSeparators) and (buf<>'') then
break;
if not(s[i] in WordSeparators) then
buf:=buf+s[i];
end;
FindFirstWord:=buf;
end;
Function FindFirstSentence(s:string):string;
var buf:string;
i:byte;
begin
i:=0;
buf:='';
repeat
inc(i);
buf:=buf+s[i];
until (s[i] in SentenceSeparators) or (i=length(s));
FindFirstSentence:=buf;
end;
procedure MoveToEnd(from,num:byte; var s:string);
var buf:string;
begin
buf:=copy(s,from,num);
delete(s,from,num);
s:=s+buf;
end;
function Result(s:string):string;
var sentence:string;
from,size,last:byte;
begin
from:=1;
last:=length(s);
repeat
sentence:=FindFirstSentence(copy(s,from,last));
size:=length(sentence);
if length(FindFirstWord(sentence))=1 then
inc(from,size)
else
begin
MoveToEnd(from,size,s);
dec(last,size);
end;
until from>=last;
Result:=s;
end;
var s:string;
begin
s:=', , Hello. I am so cool . I am so big. Yes! Pascal. I am so clever ';
writeln(s);
writeln(Result(s));
readln;
end.
Старался давать переменным и функциям понятные имена, так что все должно быть понятно. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
6ac9k |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Реальное имя: Виталик Репутация: ![]() ![]() ![]() |
Вот ![]()
const
WordSeparators=[' ',',',';'];
SentenceSeparators=['?','.','!'];
Function FindFirstWord(s:string):string;
var i:byte;
buf:string;
begin
buf:='';
for i:=1 to length(s) do
begin
if (s[i] in WordSeparators) and (buf<>'') then
break;
if not(s[i] in WordSeparators) then
buf:=buf+s[i];
end;
FindFirstWord:=buf;
end;
Function FindFirstSentence(s:string):string;
var buf:string;
i:byte;
begin
i:=0;
buf:='';
repeat
inc(i);
buf:=buf+s[i];
until (s[i] in SentenceSeparators) or (i=length(s));
FindFirstSentence:=buf;
end;
procedure MoveToEnd(from,num:byte; var s:string);
var buf:string;
begin
buf:=copy(s,from,num);
delete(s,from,num);
s:=s+buf;
end;
function Result(s:string):string;
var sentence:string;
from,size,last:byte;
begin
from:=1;
last:=length(s);
repeat
sentence:=FindFirstSentence(copy(s,from,last));
size:=length(sentence);
if length(FindFirstWord(sentence))=1 then
inc(from,size)
else
begin
MoveToEnd(from,size,s);
dec(last,size);
end;
until from>=last;
Result:=s;
end;
var s:string;
begin
s:=', , Hello. I am so cool . I am so big. Yes! Pascal. I am so clever ';
writeln(s);
writeln(Result(s));
readln;
end.
Старался давать переменным и функциям понятные имена, так что все должно быть понятно. Спасиб большое! ![]() А как насчет Описать процедуру Height (Ax, Ay, Bx, By, Cx, Cy, hA, hB, hC), находящую высоту hB, hA, hC треуголника ABC, проведенные соответственно из вершин A, B, C. С помощью этой процедуры найти высоты преугольником ABC, ABD, ACD, если даны координаты точек A, B, C, D. Если не сложно ![]() S- строка MLA- множество лат. алфавита MRZ- множество знаков препинания k- кол-во слов в тексте ps- первое слово В итоге у меня выводится только первое однобуквенное слово предложения и кол-во слов в тексте. Надо изменить исходник так, чтобы сначала шли предложения, которые начинаются с однобуквенных слов, а потом остальные предложения текста. Пример такого предложения: В лесу родилась елочка. За критерий окончания предложения взято . ! , Помогите мне пожалуйста! Я пока думаю, если получится скину ![]() |
Bokul |
![]()
Сообщение
#8
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата Спасиб большое! Кажется я шутки не понял... ![]() А насчет задачи, советую почитать правила форума. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
![]() ![]() |
![]() |
Текстовая версия | 15.04.2025 16:29 |