![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
-=BR@BUS=- |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Maxim Репутация: ![]() ![]() ![]() |
Склонение существительных.
При склонении существительных мужского рода, оканчивающихся на -ок: кружок, масленок, брелок и т.д. буква о становится беглой гласной: кружка, масленком и т.д. Из этого правила есть исключения: 1) слова из трех букв: ток, сок и т.д.; 2) слова: скок ,блок, волок, восток, шток - и слова, основа которых оканчивается на такие сочетания бука: перескок, пищеблок, юго-восток и т.д.; 3) ряд слов-исключений, среди которых наиболее употребляемы следующие: брелок, щелок, войлок, челнок, зарок, срок, урок, знаток, поток, сток, артишок. Из заданного текста выбрать слова на -ок и получить их в указанном падеже, падеж указывается соответствующей буквой в скобках непосредственно после слова. Помогите... кто знает... хоть часть |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот, потестируй:
uses crt;
type
TWord = String;
TCase = (I, R, D, V, T, P);
function IsException(const word: TWord): Boolean;
const
n = 16;
exceptions: array [1..n] of TWord = (
'скок' ,'блок', 'волок', 'восток', 'шток',
'брелок', 'щелок', 'войлок', 'челнок', 'зарок', 'срок',
'урок', 'знаток', 'поток', 'сток', 'артишок'
);
var
i: Integer;
begin
i := 1;
while (i <= n) and (word <> exceptions[i]) and
not ((i <= 5) and (Copy(word, Length(word) - Length(exceptions[i]) + 1, 255)
= exceptions[i])) do inc(i);
IsException := not(i > n);
end;
function Convert(word: TWord; _case: TCase): TWord;
begin
if (Length(word) = 3) or IsException(word) then begin
case _case of
I: Convert := word;
R: Convert := word + 'а';
D: Convert := word + 'у';
V: Convert := word;
T: Convert := word + 'ом';
P: Convert := word + 'е';
end;
end
else case _case of
I: Convert := word;
R: Convert := Copy(word, 1, Length(word) - 2) + 'ка';
D: Convert := Copy(word, 1, Length(word) - 2) + 'ку';
V: Convert := word;
T: Convert := Copy(word, 1, Length(word) - 2) + 'ком';
P: Convert := Copy(word, 1, Length(word) - 2) + 'ке';
end;
end;
begin
clrscr;
writeln('Именительный: ',Convert('брелок', I));
writeln('Родительный: ', Convert('брелок', R));
writeln('Дательный: ', Convert('брелок', D));
writeln('Винительный: ', Convert('брелок', V));
writeln('Творительный: ', Convert('брелок', T));
writeln('Предложный: ', Convert('брелок', P));
writeln;
writeln('Именительный: ',Convert('мешок', I));
writeln('Родительный: ', Convert('мешок', R));
writeln('Дательный: ', Convert('мешок', D));
writeln('Винительный: ', Convert('мешок', V));
writeln('Творительный: ', Convert('мешок', T));
writeln('Предложный: ', Convert('мешок', P));
writeln;
writeln('Именительный: ',Convert('рок', I));
writeln('Родительный: ', Convert('рок', R));
writeln('Дательный: ', Convert('рок', D));
writeln('Винительный: ', Convert('рок', V));
writeln('Творительный: ', Convert('рок', T));
writeln('Предложный: ', Convert('рок', P));
readln;
end.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
-=BR@BUS=- |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Maxim Репутация: ![]() ![]() ![]() |
Тут нужно из введёного текста выбрать слово с окончаноем -ok и вывести это слово, вот у меня такая накидка
var
d,s:string;
q,c,i,p:byte;
begin
Writeln('Vvedite text');
Readln(s);
p:=pos('ok',s);
Writeln(p);
q:=0;
for i:=p downto length(' ') do
q:=q+1;
writeln(q);
c:=p-q;
d:=Copy(s,c,p-1);
writeln(d);
Readln;
end.
Но чего-то явно не хватает, подскажите... ![]() Сообщение отредактировано: -=BR@BUS=- - |
-=BR@BUS=- |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Maxim Репутация: ![]() ![]() ![]() |
Или может ещё какой-нибудь способ есть?
|
klem4 |
![]()
Сообщение
#5
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Разбиение на слова. Все способы.
разбиваешь строку на слова, находу или потом проходя по массиву слов (если возьмешь вариант с массивом), смотришь его последние 2 символа ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 12:39 |