Дана классификация ручек для письма и информация о ручках для письма различного типа: Шариковая ручка
Описание:
Практичная серия шариковых ручек с колпачком. Цвет деталей соответствует цвету чернил.
Характеристики:
• Ширина линии: 0,7 мм.
• Цвет чернил: черный.
• Цвет корпуса: прозрачный с синими деталями.
• Код стержня: синий — 170174, черный — 170175.
• Производитель: Россия.
• Общая длина — 140 мм, диаметр кольца — 10,8 мм.
• Упаковка: обычная.
• Комплектация: 1 шт.
Перьевая ручка
• Производитель: PLATINUM Реп, Япония.
• Материал пера: золото 14 карат.
• Материал: корпус — акриловая смола; вставки в виде колец — позолоченная латунь;
клипса — позолоченная бериллиевая бронза.
• Размер: общая длина — 139,5 мм, диаметр кольца — 15,4 мм.
• Ширина линии: 0,5 мм.
• Комплектация: ручка, черный картридж.
• Упаковка: подарочный футляр.
Капиллярная ручка
• Цвет чернил: черный.
• Материал корпуса: нержавеющая сталь, лак, позолота 23 карата.
• Материал пера: нержавеющая сталь, позолота 23 карата.
• Ширина линии: 0,5 мм.
• Упаковка: подарочная коробка.
• Комплектация: 1 картридж.
Фломастер
• Производитель: Carioca Joy.
• Комплектация: 6 шт.
• Количество цветов: 6.
• Длина корпуса: 175 мм.
• Толщина линии письма: 2 мм.
• Упаковка: индивидуальная упаковка.
• Возрастная группа: младшие классы.
• Пол ребенка: универсальные.
• Торговая марка: Universal.
Фломастер-дозатор 8420-Р
• Ширина линии (мм): минимальная — 0,8; средняя — 1,6.
• Время высыхания при комнатной температуре: 10 мин.
• Количество краски во фломастере: 8 г.
На основе данной информации выполните следующие задания.
1) Определите название «суперкласса»:
2) Определите названия базовых классов:
3) Составьте таблицу, отражающую свойства, значения свойств и поведение, присущие каждому
классу.
4) Выделите в таблице свойства, наследуемые классами.
5) Опишите один экземпляр класса и значения его свойств.
1)
var
str : string;
begin
readln (str);
writeln (length (str) - pos (':', str));
end.
2)
var
str, s : string;
count, i : integer;
begin
readln (str);
s := copy (s, pos ('(', str) + 1, pos (')', str) - pos ('(', str) - 1);
count := 0;
for i := 1 to length (s) do
if s[i] = ' ' then inc (count);
writeln (count + 1);
end.
3)
var
str : string;
count : integer;
begin
readln (str);
count := 0;
while pos (',', str) > 0 do
begin
inc (count);
delete (str, pos (',', str), 1);
end;
writeln (str);
writeln (count);
end.
Сделано без проверки на соответствие условию.
var
k : byte;
arr : array of int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;
begin
read (k);
setlength (arr, k);
writeln (Fn (k));
end.
var
n : byte;
arr : array of int64;
tmp : int64;
function Fn (c : byte) : int64;
begin
if arr[c - 1] <> 0 then
begin
Fn := arr[c - 1];
exit;
end;
if c < 3 then Fn := 1
else Fn := Fn (c - 1) + Fn (c - 2);
arr[c - 1] := Result;
end;
begin
read (n);
setlength (arr, n);
tmp := (Fn (n));
tmp := 0;
for i := 1 to n do
tmp := (tmp + arr[i]) mod 2;
if tmp = 1 then writeln ('No') else writeln ('Yes');
end.
Это нисходящее динамическое программирование. В массиве Arr храняится сами числа. Рекурсивная функция Fn (n) возвращает N-ое число. В б) мы сначала просчитываем n чисел (то есть считаем число n, так как для него нужны все предыдущие), а потом ищем их сумму. Так как числа могут быть большими, то мы берем сразу их остаток от деления 2 во избежание преполнения.