Нарисовал таблицу: по вертикали фамилии, по горизонтали - специальности. Начал вычеркивать: щапов куприянов - не пилоты, поэтому ставлю "-". Петров куприянов - не штурманы - тоже минусы. Щапов и сошин - не радисты- еще 2 минуса. Сигов и щапов - не синоптики - еще 2 минуса (ну вот тут конечно натяжка с сыном) . Петров и Щапов - не бортмеханики - еще 2 минуса. У щапова осталась одна клетка - штурман. Ставлю в нее крест, а остальным в колонке штурман - нули (ну можно тоже минусы) . Далее - куприянов и сигов - не синоптики - еще минусы (кстати - тут проверка натяжки по сыну в санатории) . У куприянова остается 2 клетки- радист и бортмеханик, но он - не радист, потому что занимается боксом, т. е. он - бортмеханик. ставим крест ему в бортмеханик и 0 - в клетку радист. Сошину и сигову - нули в клетку бортмеханик. Сигов - боксер, поэтому - не радист. Минус в клетку и у него остается только клетка пилот. Нули в клетку пилот петрову и сошину. В столбце радист осталась свободная клетка только у Петрова. Стало быть - сошин - синоптик
Предполагается, что восьмеричное число записано, как символьная строка, поскольку максимальная разрядность не была оговорена в задании.
const m:array['0'..'7'] of string= ('000','001','010','011','100','101','110','111'); m1:array['1'..'7'] of string= ('1','10','11','100','101','110','111'); var s8,s2:string; i:integer; begin Write('Введите восьмеричное число: '); Readln(s8); s2:=m1[s8[1]]; for i:=2 to Length(s8) do s2:=s2+m[s8[i]]; Writeln('В двоичной системе: ',s2) end.
Тестовое решение: Введите восьмеричное число: 360721 В двоичной системе: 11110000111010001
Начал вычеркивать: щапов куприянов - не пилоты, поэтому ставлю "-". Петров куприянов - не штурманы - тоже минусы. Щапов и сошин - не радисты- еще 2 минуса. Сигов и щапов - не синоптики - еще 2 минуса (ну вот тут конечно натяжка с сыном) . Петров и Щапов - не бортмеханики - еще 2 минуса. У щапова осталась одна клетка - штурман. Ставлю в нее крест, а остальным в колонке штурман - нули (ну можно тоже минусы) . Далее - куприянов и сигов - не синоптики - еще минусы (кстати - тут проверка натяжки по сыну в санатории) . У куприянова остается 2 клетки- радист и бортмеханик, но он - не радист, потому что занимается боксом, т. е. он - бортмеханик. ставим крест ему в бортмеханик и 0 - в клетку радист.
Сошину и сигову - нули в клетку бортмеханик. Сигов - боксер, поэтому - не радист. Минус в клетку и у него остается только клетка пилот. Нули в клетку пилот петрову и сошину. В столбце радист осталась свободная клетка только у Петрова. Стало быть - сошин - синоптик
const
m:array['0'..'7'] of string=
('000','001','010','011','100','101','110','111');
m1:array['1'..'7'] of string=
('1','10','11','100','101','110','111');
var
s8,s2:string;
i:integer;
begin
Write('Введите восьмеричное число: '); Readln(s8);
s2:=m1[s8[1]];
for i:=2 to Length(s8) do s2:=s2+m[s8[i]];
Writeln('В двоичной системе: ',s2)
end.
Тестовое решение:
Введите восьмеричное число: 360721
В двоичной системе: 11110000111010001