Компьютерное представление графической информации 1. Сколько цветов (N) насчитывается в палитре, соответствующей глубине цвета (i), равной 6?
2. Сколько битов памяти достаточно для кодирования одного пикселя 256-цветного изображения?
3. Какой объем видеопамяти (I) необходим для хранения графического изображения, занимающего весь экран монитора с разрешением 800 × 640 (К), если глубина цвета (i) равна 24. ответ дайте в килобайтах.
4. Сканер имеет разрешение 512 × 512 dpi (точек на дюйм). Отсканированное изображение размером 8 × 4 дюйма занимает 16 Мбайт памяти. Чему равна глубина цвета точки (пикселя) отсканированного изображения? ответ дайте в битах.
2)отсекается 1 элемент
3)Произведение элементов массива, которые лежат в промежутке [40;55)
в паскале как и почти любом ЯП есть переменные,которые содержат имя и значение,например (i: =0)->имя переменной i,значение 0.Значение переменной можно изменить,имя переменной нельзя.Массивы это переменные которые хранят несколько значений.Чтобы обратиться к определенному значению масива использовать синтаксис имямасива[индексмасива],например чтоб получить 3 элемент масива a использовать a[3].repeat (expression) until(boolean) это цикл,в котором будет выполняться expression(любой код) до тех пор пока boolean не будет верно.Boolean это выражение значение которого будет равно true/false(правда/неправда).Напрмер в repeat
i:=i+1;
until (a[i]=x) or (i=10); к переменной i будет прибавляться 1 до тех пор пока a[i] не равно x или i будет меньше 10(так как в масиве всего 10 элементов,если например i будет 11 это будет выход за границу массива).Каждый блок выполнения в цикле(в нашем случае i:=i+1) называется итерацией.В цикле for(a to max) в a идет создание переменной-счетчика(в нашем случае создание переменной i со значением 0) ,потом пишется to и идет максимальное значение счетчика.И итерации этого цикла(if (a[i]=>40) and (a[i]<55) then s:=s*a[i];
).В конце каждой итерации автоматически значение счетчика увеличивается на 1.До тех пор пока счетчик меньше или равен max итерации будут выполняться.
А вообще в интернете очень много обучающих статей по данной теме
Внимание! Если программа не работает, обновите версию!
function gcd(a,b:integer):integer; // НОД
begin
while b<>0 do begin a:=a mod b; Swap(a,b) end;
Result:=a
end;
procedure RedFrac(var a,b:integer); // сокращение дроби
begin
var (sgna,sgnb):=(Sign(a),Sign(b)); // мы должны учитывать знак!
(a,b):=(Abs(a),Abs(b));
var d:=gcd(a,b);
a:=(a div d)*sgna; b:=(b div d)*sgnb
end;
begin
var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
(a,b):=(a*c,b*d);
RedFrac(a,b);
Writeln('Результат умножения: ',a,' / ',b)
end.
Пример
Введите числитель и знаменатель 1-й дроби: 32 1024
Введите числитель и знаменатель 2-й дроби: 60 300
Результат умножения: 1 / 160
В качестве бонуса - решение на базе входящей в состав PascalABC.NET библиотеки численных методов
uses NumLibABC;
begin
var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
Writeln('Результат умножения: ',Frc(a,b)*Frc(c,d))
end.