"Длинный" вариант Если состояний три, то и система счисления - троичная. 100 сообщений потребуют 101 разное состояние, потому что еще должно быть нулевое состояние, когда сообщения отсутствуют и все светодиоды погашены. Переводим 100 в троичную систему счисления. 100 / 3 = 33, остаток 1 33 / 3 = 11, остаток 0 11 / 3 = 3, остаток 2 3 / 3 = 1, остаток 0. Теперь выписываем остаток и приписываем к нему остатки в обратном порядке: 10201 Итак, 100₁₀ = 10201₃, т.е для кодирования ста сообщения понадобится пять светодиодов (по числу разрядов в числе).
Короткий вариант Если состояний три, то и система счисления - троичная. 100 сообщений потребуют 101 разное состояние, потому что еще должно быть нулевое состояние, когда сообщения отсутствуют и все светодиоды погашены. Нам нет необходимости узнавать точное троичное значение числа 100, поскольку необходимо знать лишь количество разрядов в его записи. А это позволит сделать нахождение логарифма 100 по основанию 3.
Окончательно принимаем n=5, т.е.для кодирования ста сообщения понадобится пять светодиодов
Uses crt;var ADR:array[1..10] of string; sub:array[1..10] of string; i,k:integer; s:string; begin; for i:=1 to 10 do begin; writeln('Input town of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s+' '; writeln('Input street of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s+' '; writeln('Input house of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s+' '; writeln('Input apartament of ',i,'student'); readln(s); ADR[i]:=ADR[i]+s; if pos('Краснодар',ADR[i])<>0 then begin; inc(k); sub[k]:=ADR[i]; end; end; TextColor(4); writeln('Result:'); for i:=1 to k do writeln(sub[i]); end.
Если состояний три, то и система счисления - троичная.
100 сообщений потребуют 101 разное состояние, потому что еще должно быть нулевое состояние, когда сообщения отсутствуют и все светодиоды погашены.
Переводим 100 в троичную систему счисления.
100 / 3 = 33, остаток 1
33 / 3 = 11, остаток 0
11 / 3 = 3, остаток 2
3 / 3 = 1, остаток 0.
Теперь выписываем остаток и приписываем к нему остатки в обратном порядке: 10201
Итак, 100₁₀ = 10201₃, т.е для кодирования ста сообщения понадобится пять светодиодов (по числу разрядов в числе).
Короткий вариант
Если состояний три, то и система счисления - троичная.
100 сообщений потребуют 101 разное состояние, потому что еще должно быть нулевое состояние, когда сообщения отсутствуют и все светодиоды погашены.
Нам нет необходимости узнавать точное троичное значение числа 100, поскольку необходимо знать лишь количество разрядов в его записи. А это позволит сделать нахождение логарифма 100 по основанию 3.
Окончательно принимаем n=5, т.е.для кодирования ста сообщения понадобится пять светодиодов
sub:array[1..10] of string;
i,k:integer;
s:string;
begin;
for i:=1 to 10 do
begin;
writeln('Input town of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s+' ';
writeln('Input street of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s+' ';
writeln('Input house of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s+' ';
writeln('Input apartament of ',i,'student');
readln(s);
ADR[i]:=ADR[i]+s;
if pos('Краснодар',ADR[i])<>0 then
begin;
inc(k);
sub[k]:=ADR[i];
end;
end;
TextColor(4);
writeln('Result:');
for i:=1 to k do
writeln(sub[i]);
end.