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 Мбайта не хватит.
1. Надо добавить точку в последней строке программы. Иначе работать не будет. 2. Меняется всего одна строка в программе:
program pr2;
type student = record {объявление нового типа данных student} LastName: string; {фамилия студента} bal: array [1..5] of integer; {массив для 5-ти оценок} average: real {средний студента} end;
var pupil: array [1..100] of student; {массив pupil (максимум из 100 элементов) типа student} n, i, j, s: integer;{переменные целого типа}
begin write('Введите количество студентов: '); readln(n); for i := 1 to n do begin{запрос данных по n студентам} with pupil[i] do begin Write('Введите фамилию студента №', i, ': '); {запрос фамилии студента под номером i} Readln(LastName); s := 0; {целочисленная переменная для определения суммы студента} for j := 1 to 5 do begin{цикл для обработки 5-ти оценок каждого студента} write('Введите оценку за экзамен №:', j, ': ' ); readln(bal[j] ); s := s + bal[j]; {суммирование 5-ти оценок студента} end; average := s / 5; {определение среднего значения и запись в переменную average} end; end; writeln; writeln( 'Студенты, имеющие средний больший или равный 4'); for i := 1 to n do begin if pupil[i].average >= 4 then {если средний студента >=4} write(pupil[i].LastName,', '); end; 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 Мбайта
2. Меняется всего одна строка в программе:
program pr2;
type
student = record {объявление нового типа данных student}
LastName: string; {фамилия студента}
bal: array [1..5] of integer; {массив для 5-ти оценок}
average: real {средний студента}
end;
var
pupil: array [1..100] of student; {массив pupil (максимум из 100 элементов) типа student}
n, i, j, s: integer;{переменные целого типа}
begin
write('Введите количество студентов: ');
readln(n);
for i := 1 to n do
begin{запрос данных по n студентам}
with pupil[i] do
begin
Write('Введите фамилию студента №', i, ': '); {запрос фамилии студента под номером i}
Readln(LastName);
s := 0; {целочисленная переменная для определения суммы студента}
for j := 1 to 5 do
begin{цикл для обработки 5-ти оценок каждого студента}
write('Введите оценку за экзамен №:', j, ': ' );
readln(bal[j] );
s := s + bal[j]; {суммирование 5-ти оценок студента}
end;
average := s / 5; {определение среднего значения и запись в переменную average}
end;
end;
writeln;
writeln( 'Студенты, имеющие средний больший или равный 4');
for i := 1 to n do
begin
if pupil[i].average >= 4 then {если средний студента >=4}
write(pupil[i].LastName,', ');
end;
end.