Проверьте изученное 1. Что такое объект? 2. Какие объекты можно вставлять в текстовый документ? 3. Какие возможности имеются в программе OpenOffice.org Writer для работы с формулами?
begin for i := 1 to 5 do read(ar[i]); window.IsFixedSize := true; window.Init(0, 0, 800, 800, clDarkGray); window.CenterOnScreen; SetFontSize(32); for i := 1 to 5 do c := c + ar[i].ToString.Length; for i := 1 to 7 do writeln; write(' ':33 - c); for i := 1 to 5 do begin if(ar[i] mod 2 = 0) and (ar[i] mod 10 <> 0) then begin SetFontColor(clred); write(ar[i]); end else if(ar[i] mod 10 = 0) then begin SetFontColor(clblue); write(ar[i]); end else if(ar[i] mod 2 <> 0) then begin SetFontColor(clyellow); write(ar[i]); end end; end.
Месяц находим методом половинного деления. Двоичная запись числа 366 размещается в 9 битах (в 8 битах размещается только 256 чисел, а в 9 битах - уже 512). Следовательно, понадобится задать 8 вопросов и девятой фразой будет ответ. В году 365 (366) дней. Пусть 366, для 365 рассуждение то же. Рассмотрим самый худший вариант
Середина года - день номер 366/2=183. Это 1 июля. Первый вопрос: День рождения в первой половине года? Допустим, да.
Второй вопрос: День рождения в первом квартале? Допустим, нет. Следовательно во втором.
Второй квартал - это дни с номерами от 92 до 182. Середина - среднее арифметическое. (92+182)/2=137. Это дата 17 мая. Третий вопрос: День рождения позднее 17 мая? Допустим, нет.
Следовательно, интервал дат 1 апреля - 17 мая, 91 день. Опять делим на 2, сужая интервал до 22 дней. Это дата 22 апреля. Четвертый вопрос: День рождения позднее 22 апреля? Допустим, нет.
Новый диапазон поиска - 23 апреля - 17 мая. Половиним его. Пятый вопрос: День рождения позднее 29 апреля? Допустим, нет.
Поиск сузился до 23 - 29 апреля. Снова берем половину. Шестой вопрос: День рождения позднее 26 апреля? Допустим, нет.
Интервал дат 23-26 апреля. Половиним. Седьмой вопрос: День рождения позднее 24 апреля? Допустим, да.
Интервал дат 25-26 апреля. Восьмой вопрос: День рождения 25 апреля? Допустим, нет
var
i, c: integer;
ar: array[1..5]of integer;
begin
for i := 1 to 5 do read(ar[i]);
window.IsFixedSize := true;
window.Init(0, 0, 800, 800, clDarkGray);
window.CenterOnScreen;
SetFontSize(32);
for i := 1 to 5 do c := c + ar[i].ToString.Length;
for i := 1 to 7 do writeln;
write(' ':33 - c);
for i := 1 to 5 do
begin
if(ar[i] mod 2 = 0) and (ar[i] mod 10 <> 0) then
begin
SetFontColor(clred);
write(ar[i]);
end
else if(ar[i] mod 10 = 0) then
begin
SetFontColor(clblue);
write(ar[i]);
end
else if(ar[i] mod 2 <> 0) then
begin
SetFontColor(clyellow);
write(ar[i]);
end
end;
end.