C++ Напишите функцию, которая принимает аргументы в виде целочисленной строки и столбца символов как указатели. Функция должна определять, есть ли в ячейке шахматной доски белый или черный. Вы также должны проверить, разрешены ли вводимые данные: (1 <= row <= 8) и столбец должен входить в набор {a, b, c, d, e, f, g, h}. (Примечание: программа должна использовать указатель.
InputOutput 1) 5f White 2) 2d Black 3) 10h Wrong input
//Можно и без дня недели пятницы //PascalABC.NET 3.2 сборка 1318
//PascalABC вариант
Var Year,YearCode:integer; begin readln(Year); case(Year div 100 mod 4) of 0:YearCode:=6; 1:YearCode:=4; 2:YearCode:=2; 3:YearCode:=0; end; YearCode:=(YearCode+Year mod 100+ Year mod 100 div 4) mod 7; if Year mod 4<>0 then begin if (13+1+YearCode) mod 7=6 then writeln('Январь'); end else if (13+1+YearCode) mod 7=0 then writeln('Январь'); if Year mod 4<>0 then begin if (13+4+YearCode) mod 7=6 then writeln('Февраль'); end else if (13+4+YearCode) mod 7=0 then writeln('Февраль'); if (13+1+YearCode) mod 7=6 then writeln('Октябрь'); if (13+2+YearCode) mod 7=6 then writeln('Май'); if (13+3+YearCode) mod 7=6 then writeln('Август'); if (13+4+YearCode) mod 7=6 then writeln('Март'); if (13+4+YearCode) mod 7=6 then writeln('Ноябрь'); if (13+5+YearCode) mod 7=6 then writeln('Июнь'); if (13+6+YearCode) mod 7=6 then writeln('Декабрь'); if (13+6+YearCode) mod 7=6 then writeln('Сентябрь'); if (13+0+YearCode) mod 7=6 then writeln('Апрель'); if (13+0+YearCode) mod 7=6 then writeln('Июль'); end.
//.NET вариант
uses system;
const Day=13; n=12;
Var Year,i:integer; ars:array[1..n] of string:=('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'); ard:array[1..n] of DateTime; begin readln(Year); for i:=1 to n do begin ard[i]:=ard[i].AddDays(Day-1); ard[i]:=ard[i].AddMonths(i-1); ard[i]:=ard[i].AddYears(Year-1); if ard[i].DayOfWeek.ToString='Friday' then writeln(ars[i]); end; end.
1) Работает 6 часов по полчаса - 12 пациентов. Кодируется int(log2 12) = 4 битами. 2) 32 буквы кодируются 5 битами (log2 32). В слове «муравей» 6 букв. 6 * 5 = 30.3) 8*8 = 64. log2 64 = 6. Именно столько бит необходимо для кодирования каждой клетки.4) Что подразумевается под «оптимальным» не знаю, так что затрудняюсь ответить.5) log2 64 = 6 - количество бит для кодирования символа. 2000 * 6 = 12000 - количество бит для кодирования текста. 12000 / 8 = 1500 - количество байт для кодирования текста.6) 300 / 150 = 2 байта на символ. 2 * 8 = 16 бит. 2^16 = 65536. В алфавите не более 65536 символов7) Если кодировка ASCII или другая с кодированием в 1 байт на символ, то да, т.к. в килобайте 1024 байт. Если Unicode или подобные с 2-байтовой кодировкой, то нет/8) 5000 / 10 = 500 - байт = 4000 бит в секунду. 800 - символов в секунду. 5 бит на символ. 2^5 = 32 символа9) 2,5 = log2 32 / log2 x. Получаем, что x = 410) один 8-ричный разряд содержит 3 бита (log2 8), 3 разряда числа - 3 * 3 = 9
//PascalABC.NET 3.2 сборка 1318
//PascalABC вариант
Var
Year,YearCode:integer;
begin
readln(Year);
case(Year div 100 mod 4) of
0:YearCode:=6;
1:YearCode:=4;
2:YearCode:=2;
3:YearCode:=0;
end;
YearCode:=(YearCode+Year mod 100+ Year mod 100 div 4) mod 7;
if Year mod 4<>0 then
begin
if (13+1+YearCode) mod 7=6 then writeln('Январь');
end
else
if (13+1+YearCode) mod 7=0 then writeln('Январь');
if Year mod 4<>0 then
begin
if (13+4+YearCode) mod 7=6 then writeln('Февраль');
end
else
if (13+4+YearCode) mod 7=0 then writeln('Февраль');
if (13+1+YearCode) mod 7=6 then writeln('Октябрь');
if (13+2+YearCode) mod 7=6 then writeln('Май');
if (13+3+YearCode) mod 7=6 then writeln('Август');
if (13+4+YearCode) mod 7=6 then writeln('Март');
if (13+4+YearCode) mod 7=6 then writeln('Ноябрь');
if (13+5+YearCode) mod 7=6 then writeln('Июнь');
if (13+6+YearCode) mod 7=6 then writeln('Декабрь');
if (13+6+YearCode) mod 7=6 then writeln('Сентябрь');
if (13+0+YearCode) mod 7=6 then writeln('Апрель');
if (13+0+YearCode) mod 7=6 then writeln('Июль');
end.
//.NET вариант
uses
system;
const
Day=13;
n=12;
Var
Year,i:integer;
ars:array[1..n] of string:=('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
ard:array[1..n] of DateTime;
begin
readln(Year);
for i:=1 to n do
begin
ard[i]:=ard[i].AddDays(Day-1);
ard[i]:=ard[i].AddMonths(i-1);
ard[i]:=ard[i].AddYears(Year-1);
if ard[i].DayOfWeek.ToString='Friday' then writeln(ars[i]);
end;
end.
Пример ввода:
2016
Пример вывода:
Май