var a: array[1..MAX_SIZE] of integer; i, size: integer;
procedure delete_odd_elements(); var i, j: integer; begin i := 1; repeat if odd(a[i]) then begin dec(size); for j := i to size do a[j] := a[j + 1] end else inc(i); until i > size; end;
begin writeln('Исходный массив: '); size := MAX_SIZE; for i := 1 to size do begin a[i] := random(100); write(a[i] : 3); end; delete_odd_elements; writeln; writeln('Полученный массив: '); for i := 1 to size do write(a[i] : 3); end.
1. Определяем количество байт, необходимое для отображения 16777216 цветов. Те, кто немного "в теме" и так знают, что 16 млн. цветов - это "трехбайтный" цвет, когда на каждый канал RGB - красный, зеленый и синий отводится ровно один байт. А остальным придется немного повычислять. a) Можно идти по пути умножения, если у нас калькулятор на четыре действия арифметики. Вспомним, что 1024 байта (1 Кбайт) - это 2¹⁰ байт (поэтому они и "кило" байт). Забываем про байты, но получаем знание о том, что десятая степень двойки - это 1024. Умножаем 1024 само на себя, получая 1048576- это квадрат, т.е. 20-я степень. А дальше удваиваем, получая 2097152, 4194304, 8388608 и 16777216. Вот оно, наше число. Умножали 4 раза, значит окончательно степень 24. 24 бита делим на 8, получая 3 байта. б) Если у нас есть логарифмы, то решаем уравнение 2ⁿ=16777216. n = ㏒₂16777216 = 24. Кто не может вычислять логарифмы по основанию 2, тот вычисляет n=㏑(16777216)/㏑(2)
2. Теперь найдем, сколько же надо всего пикселей. 1600 х 1200 = 1920000. Немало, да еще каждый пиксель требует 3 байта на свой цвет. В целом все эти пиксели займут 1920000 х 3 = 5760000 байт.
3. Переведем полученный объем памяти в килобайты и мегабайты. 5760000 / 1024 = 5625 Кбайт. 5625 / 1024 ≈ 5.5 Мбайт.
4. Смотрим, что нам предлагают не ниже этих значений. Только 64 Мбайта. Придется брать такую карту, потому что 4 Мбайта не хватит.
MAX_SIZE = 10;
var
a: array[1..MAX_SIZE] of integer;
i, size: integer;
procedure delete_odd_elements();
var i, j: integer;
begin
i := 1;
repeat
if odd(a[i]) then
begin
dec(size);
for j := i to size do
a[j] := a[j + 1]
end
else inc(i);
until i > size;
end;
begin
writeln('Исходный массив: ');
size := MAX_SIZE;
for i := 1 to size do
begin
a[i] := random(100);
write(a[i] : 3);
end;
delete_odd_elements;
writeln;
writeln('Полученный массив: ');
for i := 1 to size do
write(a[i] : 3);
end.
Те, кто немного "в теме" и так знают, что 16 млн. цветов - это "трехбайтный" цвет, когда на каждый канал RGB - красный, зеленый и синий отводится ровно один байт. А остальным придется немного повычислять.
a) Можно идти по пути умножения, если у нас калькулятор на четыре действия арифметики. Вспомним, что 1024 байта (1 Кбайт) - это 2¹⁰ байт (поэтому они и "кило" байт). Забываем про байты, но получаем знание о том, что десятая степень двойки - это 1024. Умножаем 1024 само на себя, получая 1048576- это квадрат, т.е. 20-я степень. А дальше удваиваем, получая 2097152, 4194304, 8388608 и 16777216. Вот оно, наше число. Умножали 4 раза, значит окончательно степень 24. 24 бита делим на 8, получая 3 байта.
б) Если у нас есть логарифмы, то решаем уравнение 2ⁿ=16777216.
n = ㏒₂16777216 = 24. Кто не может вычислять логарифмы по основанию 2, тот вычисляет n=㏑(16777216)/㏑(2)
2. Теперь найдем, сколько же надо всего пикселей.
1600 х 1200 = 1920000. Немало, да еще каждый пиксель требует 3 байта на свой цвет. В целом все эти пиксели займут 1920000 х 3 = 5760000 байт.
3. Переведем полученный объем памяти в килобайты и мегабайты.
5760000 / 1024 = 5625 Кбайт.
5625 / 1024 ≈ 5.5 Мбайт.
4. Смотрим, что нам предлагают не ниже этих значений. Только 64 Мбайта. Придется брать такую карту, потому что 4 Мбайта не хватит.
ответ: 64 Мбайта