Для удобства вычислений переведём размер сканируемого изображения в дюймы: 20,32 × 20,32 (см) = 8 × 8 (inch).
Сначала найдём количество пикселей по горизонтали, по вертикали, затем общее количество пикселей, исходя из разрешающей сканера. Зная, что каждый пиксель кодируется 4 битами, найдём объём памяти, необходимый для хранения графической информации, что и будет являться информационным объёмом файла.
1) 600 × 8 = 4800 (px) – количество пикселей по горизонтали.
2) 1200 × 8 = 9600 (px) – количество пикселей по вертикали.
var a: array[1..n1, 1..m1] of integer; b: array[1..m1] of integer; i, j, m, n: integer;
begin Write('Введите через пробел число строк и столбцов массива: '); Readln(n, m); Randomize; Writeln('Исходный массив'); for i := 1 to n do begin for j := 1 to m do begin a[i, j] := Random(101) - 50; Write(a[i, j]:4) end; Writeln end; Writeln('Сформированный массив'); for j := 1 to m do begin i := 1; while (i <= n) and (a[i, j] >= 0) do i := i + 1; if i <= n then b[j] := a[i, j] else b[j] := -99; Write(b[j]:4) end; Writeln end.
Сначала найдём количество пикселей по горизонтали, по вертикали, затем общее количество пикселей, исходя из разрешающей сканера. Зная, что каждый пиксель кодируется 4 битами, найдём объём памяти, необходимый для хранения графической информации, что и будет являться информационным объёмом файла.
1) 600 × 8 = 4800 (px) – количество пикселей по горизонтали.
2) 1200 × 8 = 9600 (px) – количество пикселей по вертикали.
3) 4800 × 9600 = 46 080 000 (px) – всего пикселей.
4) 46 080 000 × 4 = 184 320 000 (bit) = 22 500 (KB)
ответ: полученный графический файл будет иметь объём 22 500 килобайт.
n1 = 20;
m1 = 20;
var
a: array[1..n1, 1..m1] of integer;
b: array[1..m1] of integer;
i, j, m, n: integer;
begin
Write('Введите через пробел число строк и столбцов массива: ');
Readln(n, m);
Randomize;
Writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := Random(101) - 50;
Write(a[i, j]:4)
end;
Writeln
end;
Writeln('Сформированный массив');
for j := 1 to m do
begin
i := 1;
while (i <= n) and (a[i, j] >= 0) do i := i + 1;
if i <= n then b[j] := a[i, j] else b[j] := -99;
Write(b[j]:4)
end;
Writeln
end.
Тестовое решение:
Введите через пробел число строк и столбцов массива: 3 10
Исходный массив
-11 -18 -42 -22 -9 2 21 15 40 -3
4 -5 40 -13 -44 -37 43 47 1 -39
20 50 21 -18 -10 6 12 -10 43 -37
Сформированный массив
-11 -18 -42 -22 -9 -37 -99 -10 -99 -3