Для начала давайте определим сколько памяти требуется для хранения одного символа. Для этого вспомним главную формулу информатики
Здесь i — количество бит на 1 символ, а N — количество различных символов. По условию задачи у нас всего 26 символов, значит подставим вместо N число 26 и получим
Теперь нужно понять чему равно i. Если i = 4, то 2 4 = 16. Т. е. 4 бита на 1 символ позволит закодировать 16 символов, а у нас их 26. Маловато будет.
Если i=5, то 2 5 = 32. На наши 26 символов этого хватит. Значит на 1 символ у нас будет приходится 5 бит информации.
Так как в пароле у нас 7 символов, то на 1 пароль потребуется 7*5 =35 бит памяти. В байтах это будет 35/8 = 4,375. Округлим в большую сторону (так как по условию «для
каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт») и получим, что на хранение пароля пользователя требуется 5 байт памяти.
Так как на 30 пользователей отводится 600 байт памяти, то на одного пользователя требуется 600/30 = 20 байт памяти. Из них 5 байт отводится для пароля. Следовательно для дополнительных сведений остается 20 — 5 = 15 байт.
const
m=6;
n=7;
var
a:array[1..m,1..n] of integer;
i,j,k,x,y,x1,y1,s:integer;
begin
Randomize;
Write('Введите через пробел x и y: '); Read(x,y);
if y<x then begin s:=x; x:=y; y:=s end;
Writeln('Исходный массив');
if x<0 then x1:=2*x else x1:=x div 2;
if y<0 then y1:=y div 2 else y1:=2*y;
k:=y1-x1+1; s:=0;
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i,j]:=Random(k)+x1;
Write(a[i,j]:4);
if (a[i,j]>=x) and (a[i,j]<=y) then s:=s+a[i,j]
end;
Writeln
end;
for j:=1 to n do a[1,j]:=s;
Writeln('Результирующая матрица');
for i := 1 to m do
begin
for j := 1 to n do Write(a[i,j]:4);
Writeln
end
end.
Тестовое решение:
Введите через пробел x и y: -5 10
Исходный массив
0 11 -6 15 -8 -2 -6
9 0 6 1 11 -2 -1
2 9 13 -1 6 0 9
6 1 -5 8 -3 0 -5
8 4 -8 7 -6 6 11
18 -1 15 -8 -9 -9 20
Результирующая матрица
62 62 62 62 62 62 62
9 0 6 1 11 -2 -1
2 9 13 -1 6 0 9
6 1 -5 8 -3 0 -5
8 4 -8 7 -6 6 11
18 -1 15 -8 -9 -9 20