Предположим, что оцифрованное телевизионное изображение передается источником, использующим матрицу 480х500 пикселей, значений яркости каждого пикселя - 32. в секунду посылается 30 изображений. найдите скорость передачи.
// PascalABC.NET 3.3, сборка 1579 от 18.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var (n,m):=ReadInteger2('Количество строк и столбцов в массиве:'); Writeln('*** Исходный массив [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var s:=a.Rows.SelectMany(t->t).Where(t->t mod 8=0); Writeln(s.Sum,' - сумма ',s.Count,' чисел(числа), кратных 8') end.
var f,r,x,n,k1,k2:integer; begin f:=450; r:=1024*1024; x:=2; while x<=r do begin n:=r div x; k1:=Ceil(f/x); k2:=Ceil(f/(2*x)); if (n div k1) = ((n div 2) div k2+40) then begin writeln('1 разбиение: блок = ',x,' Кбайт, блоков на файл ',k1,', файлов ',n div k1); writeln('2 разбиение: блок = ',2*x,' Кбайт, блоков на файл ',k2,', файлов ',(n div 2) div k2); end; x:=2*x; end; end.
Результат: 1 разбиение: блок = 8 Кбайт, блоков на файл 57, файлов 2299 2 разбиение: блок = 16 Кбайт, блоков на файл 29, файлов 2259
// Внимание! Если программа не работает, обновите версию!
begin
var (n,m):=ReadInteger2('Количество строк и столбцов в массиве:');
Writeln('*** Исходный массив [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var s:=a.Rows.SelectMany(t->t).Where(t->t mod 8=0);
Writeln(s.Sum,' - сумма ',s.Count,' чисел(числа), кратных 8')
end.
Пример
Количество строк и столбцов в массиве: 6 9
*** Исходный массив [6,9] ***
-66 98 -73 -10 -14 -86 -63 -91 -79
-36 -2 -22 -3 51 59 93 36 -75
72 20 77 12 17 72 71 -41 -73
56 -33 2 -38 -60 17 -14 84 58
10 -99 -8 58 -62 -87 -15 -33 62
-94 -82 93 82 -41 -74 35 94 -84
192 - сумма 4 чисел(числа), кратных 8
На 1 файл: 480*320*24 бит = 480*320*3 байт = 450 Кбайт
var f,r,x,n,k1,k2:integer;
begin
f:=450;
r:=1024*1024;
x:=2;
while x<=r do begin
n:=r div x;
k1:=Ceil(f/x); k2:=Ceil(f/(2*x));
if (n div k1) = ((n div 2) div k2+40)
then begin
writeln('1 разбиение: блок = ',x,' Кбайт, блоков на файл ',k1,', файлов ',n div k1);
writeln('2 разбиение: блок = ',2*x,' Кбайт, блоков на файл ',k2,', файлов ',(n div 2) div k2);
end;
x:=2*x;
end;
end.
Результат:
1 разбиение: блок = 8 Кбайт, блоков на файл 57, файлов 2299
2 разбиение: блок = 16 Кбайт, блоков на файл 29, файлов 2259