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

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

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

> Склонение существительных (строки)
-=BR@BUS=-
сообщение 8.12.2006 20:39
Сообщение #1


Новичок
*

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

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


Склонение существительных.
При склонении существительных мужского рода, оканчивающихся на -ок: кружок, масленок, брелок и т.д. буква о становится беглой гласной: кружка, масленком и т.д. Из этого правила есть исключения: 1) слова из трех букв: ток, сок и т.д.; 2) слова: скок ,блок, волок, восток, шток - и слова, основа которых оканчивается на такие сочетания бука: перескок, пищеблок, юго-восток и т.д.; 3) ряд слов-исключений, среди которых наиболее употребляемы следующие: брелок, щелок, войлок, челнок, зарок, срок, урок, знаток, поток, сток, артишок.
Из заданного текста выбрать слова на -ок и получить их в указанном падеже, падеж указывается соответствующей буквой в скобках непосредственно после слова.

Помогите... кто знает... хоть часть
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
klem4
сообщение 9.12.2006 21:20
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Вот, потестируй:

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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=BR@BUS=-
сообщение 17.12.2006 13:15
Сообщение #3


Новичок
*

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

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


Тут нужно из введёного текста выбрать слово с окончаноем -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.


Но чего-то явно не хватает, подскажите... unsure.gif

Сообщение отредактировано: -=BR@BUS=- - 19.12.2006 22:19
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-=BR@BUS=-
сообщение 19.12.2006 22:24
Сообщение #4


Новичок
*

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

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


Или может ещё какой-нибудь способ есть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 19.12.2006 23:09
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Разбиение на слова. Все способы.

разбиваешь строку на слова, находу или потом проходя по массиву слов (если возьмешь вариант с массивом), смотришь его последние 2 символа ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 14:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"