11. Предложите кодирования рисунка, содержащего четыре оттенка серого цвета. Используйте равномерный код Минимальная длина кодовых слов: потому что Получился двоичный код:
//дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от -10 до 20. //Составьте программу, которая подсчитывает и выводит среднюю температуру по всем дням, //когда были заморозки. Гарантируется, что хотя бы в один день были заморозки
var i,x,y : shortint; s : real; t : array [1..30] of shortint; begin randomize; For i:=1 to 30 do begin t[i]:=random (31)-10; //заполняем таблицу случайным образом (в диапазоне от -10 до 20) writeln (i,' ',t[i]); //строка не обязательная просто позволяет увидеть заполненный массив end; for i:=1 to 30 do begin if t[i]<0 then begin x:=x+t[i]; y:=y+1; end; end; s:=x/y; writeln ('Средняя температура по дням, когда были заморозки ',s:0:2); end.
В матрице 42 элемента. Заполним её случайными значениями в диапазоне от x/2 до 2*y, тогда в среднем половина значений попадет в заданный диапазон.
const m=6; n=7; var a:array[1..m,1..n] of integer; i,j,k,x,y,x1,y1,s:integer; begin Randomize; Write('Введите через пробел x и y: '); Read(x,y); if y<x then begin s:=x; x:=y; y:=s end; Writeln('Исходный массив'); if x<0 then x1:=2*x else x1:=x div 2; if y<0 then y1:=y div 2 else y1:=2*y; k:=y1-x1+1; s:=0; for i := 1 to m do begin for j := 1 to n do begin a[i,j]:=Random(k)+x1; Write(a[i,j]:4); if (a[i,j]>=x) and (a[i,j]<=y) then s:=s+a[i,j] end; Writeln end; for j:=1 to n do a[1,j]:=s; Writeln('Результирующая матрица'); for i := 1 to m do begin for j := 1 to n do Write(a[i,j]:4); Writeln end end.
//Составьте программу, которая подсчитывает и выводит среднюю температуру по всем дням,
//когда были заморозки. Гарантируется, что хотя бы в один день были заморозки
var i,x,y : shortint;
s : real;
t : array [1..30] of shortint;
begin
randomize;
For i:=1 to 30 do
begin
t[i]:=random (31)-10; //заполняем таблицу случайным образом (в диапазоне от -10 до 20)
writeln (i,' ',t[i]); //строка не обязательная просто позволяет увидеть заполненный массив
end;
for i:=1 to 30 do
begin
if t[i]<0 then
begin
x:=x+t[i];
y:=y+1;
end;
end;
s:=x/y;
writeln ('Средняя температура по дням, когда были заморозки ',s:0:2);
end.
const
m=6;
n=7;
var
a:array[1..m,1..n] of integer;
i,j,k,x,y,x1,y1,s:integer;
begin
Randomize;
Write('Введите через пробел x и y: '); Read(x,y);
if y<x then begin s:=x; x:=y; y:=s end;
Writeln('Исходный массив');
if x<0 then x1:=2*x else x1:=x div 2;
if y<0 then y1:=y div 2 else y1:=2*y;
k:=y1-x1+1; s:=0;
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i,j]:=Random(k)+x1;
Write(a[i,j]:4);
if (a[i,j]>=x) and (a[i,j]<=y) then s:=s+a[i,j]
end;
Writeln
end;
for j:=1 to n do a[1,j]:=s;
Writeln('Результирующая матрица');
for i := 1 to m do
begin
for j := 1 to n do Write(a[i,j]:4);
Writeln
end
end.
Тестовое решение:
Введите через пробел x и y: -5 10
Исходный массив
0 11 -6 15 -8 -2 -6
9 0 6 1 11 -2 -1
2 9 13 -1 6 0 9
6 1 -5 8 -3 0 -5
8 4 -8 7 -6 6 11
18 -1 15 -8 -9 -9 20
Результирующая матрица
62 62 62 62 62 62 62
9 0 6 1 11 -2 -1
2 9 13 -1 6 0 9
6 1 -5 8 -3 0 -5
8 4 -8 7 -6 6 11
18 -1 15 -8 -9 -9 20