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

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

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

 
 Ответить  Открыть новую тему 
> Склонение существительных (строки)
сообщение
Сообщение #1


Новичок
*

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

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


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

Помогите... кто знает... хоть часть
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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=- -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


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


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

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

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


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

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


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

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

 





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