Написать программу ** Паскале, где пиксели рисунка закодированы числами (обозначающими...

0 голосов
450 просмотров

Написать программу на Паскале, где пиксели рисунка закодированы числами (обозначающими цвет) в виде матрицы, содержащей N строк и M столбцов. Выполните отражение рисунка сверху вниз:


image

Информатика (21 баллов) | 450 просмотров
0

PascalABC.Net подойдет?

0

вполне

Дано ответов: 2
0 голосов
Правильный ответ

//PascalABC.NET 3.1 сборка 1219
procedure PrintMatrix(a: array[,] of integer);
begin
    for var i := a.GetLowerBound(0) to a.GetUpperBound(0) do
    begin
        writeln;
        for var j := a.GetLowerBound(1) to a.GetUpperBound(1) do
            write(a[i, j], ' ');
    end;
    writeln;
end;

begin
    var a := MatrixRandom(ReadInteger('n ='), ReadInteger('m ='), 0, 255);
    PrintMatrix(a);
    
    for var i := a.GetLowerBound(0) to (a.GetUpperBound(0) div 2) do
        for var j := a.GetLowerBound(1) to a.GetUpperBound(1) do
            swap(a[i, j], a[a.GetLowerBound(0) + a.GetUpperBound(0) - i, j]);
            
    PrintMatrix(a);
end.

(53.1k баллов)
0

Пример

0

n = 2
m = 5

132 115 134 102 21
108 17 210 3 59

108 17 210 3 59
132 115 134 102 21

0 голосов

Выделить код1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 uses   graphABC; const   n=100;   m=115; var   a:array[1..n,1..m] of integer;   x,i,j:integer; begin   randomize;   setbrushcolor(clAqua);   rectangle(0,0,windowwidth,windowheight);   for i:=1 to n do     for j:=1 to m do       begin           a[i,j]:=(i*j)*n;       end;   for i:=1 to n do     for j:=1 to m do       setpixel(j+150,i+150,a[i,j]);   for i:=1 to n div 2 do     for j:=1 to m do       begin         x:=a[i,j];         a[i,j]:=a[n-i+1,m-j+1];         a[n-i+1,m-j+1]:=x;       end;   {если матрица нечетная, переставим элементы  средней строки}   if odd(n) then     for i:=1 to n div 2 do       begin         x:=a[n div 2+1,i];         a[n div 2+1,i]:=a[n div 2+1,n-i+1];         a[n div 2+1,n-i+1]:=x;       end;   for i:=1 to n do     for j:=1 to m do       setpixel(j+350,i+150,a[i,j]); end.
(74 баллов)