Цветовая схема:
C C C C
Шрифт
Arial Times New Roman
Размер шрифта
A A A
Кернинг
1 2 3
Изображения:
  • ХМАО - Югра, г. Нижневартовск
  • +7 (904) 483-50-68
  • sammitportal@mail.ru

10 класс: Информатика от 13.04.2020

10 класс: Информатика от 13.04.2020

10класс.jpg
Тема "Перебор элементов матрицы"
Главная и побочная диагональ при работе с двумерными матрицами в Pascal

Главная диагональ квадратной матрицы n x n (т.е. той, у которой количество строк равно количеству столбцов) проходит с верхнего левого угла матрицы (элемент 1,1) до правого нижнего угла матрицы (элемент n,n).
Побочная диагональ квадратной матрицы n x n проходит с нижнего левого угла матрицы (элемент n,1) до правого верхнего угла матрицы (элемент 1,n).
Формулу поиска элементов диагоналей проще всего искать, нарисовав элементы матрицы:

33.jpg

Учитывая, что первая цифра будет соответствовать счетчику i, а вторая — счетчику j, то из таблицы можно вывести формулы:

Главная диагональ матрицы имеет формулу: i=j
Побочная диагональ матрицы имеет формулу: n=i+j-1 (или j=n-i+1)
где n — размерность квадратной матрицы

116.jpg
[spoiler]
117.jpg
Задания на урок:

«A»: Напишите программу, которая заполняет квадратную матрицу случайными числами в интервале [10,99], а затем записывает нули во все элементы выше главной диагонали. Алгоритм не должен изменяться при изменении размеров матрицы.

Пример:

Матрица А:
12 14 67 45
32 87 45 63
69 45 14 30
40 12 35 65
Результат:
12  0  0  0
32 87  0  0
69 45 14  0
40 12 35 65

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

11.jpg

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

22.jpg
0
13.04.2020 10:14:50
Изибаева Анна.Задача С
program flip;
var a: array [1..100, 1..100] of integer;
i, j, n, m, z: integer;
begin
write ('Введите N: ');
readln (n);
write ('Введите M: ');
readln (m);
for i:=1 to n do
begin
for j:=1 to m do
begin
inc (z);
a[i,j]:=z;
write (a[i,j]:3);
end;
writeln;
end;
writeln('Результат: ');
for j:=1 to m do
begin
for i:=n downto 1 do
begin
write (a[i,j]:3);
end;
writeln;
end;
end.
Ответить Ссылка 0
0
Черепанова Анна
13.04.2020 12:17:09
Черепанова Анна
const N=4; M=4;
var A: array [1..N, 1..M] of integer;
i,j: integer;
begin
writeln('Массив:');
for i:= 1 to N do begin
for j:= 1 to M do begin
A[i,j]:= random(9)+1;
write(A[i,j]:3)
end;
writeln
end;
writeln('Результат:');
for j:=1 to m do begin
for i:=n downto 1 do begin
write (a[i,j]:3);
end;
writeln;
end;
end.
Ответить Ссылка 0
0
13.04.2020 14:50:21
Аннам (Черепановой и Изибаевой)
Вы не правильно поняли смысл задачи. Нужно не вывести на экран с поворотом матрицу, а в самом массиве изменить значения, как указано на рисунке. Выводить на экран матрицу нужно стандартным способом.
Ответить Родитель Ссылка 0
0
13.04.2020 16:16:32
Калашин Олег
Program levelb {Калашин Олег уровень B};
const n=3;m=3;
Var a:array[1..n,1..m] of integer;
   i,j,b:integer;
Begin
Writeln('Матрица A: ');
for i:=1 to n do begin
 for j:=1 to m do begin
  a[i,j]:= random(256);
  write(a[i,j]:4);
 end;
 writeln;
end;
for j:=1 to m do begin
b:=a[1,j];
a[1,j]:=a[3,j];
a[3,j]:=b;
end;
writeln('Результат:');
for i:=1 to n do begin
 for j:=1 to m do begin
   write(a[i,j]:4);
  end;
 writeln;
end;
End.    
Ответить Ссылка 0
0
13.04.2020 19:23:30
Калашину Олегу
Олег, ты делаешь очень частный случай, меняешь 1 строку на 3. А кто сказал, что в матрице 3 строки?
Ответить Родитель Ссылка 0
0
Калашин Олег
14.04.2020 09:09:27
отражение матрицы
А тогда как будет меняться матрица, если в ней будет чётное кол-во строк? Те что посередине поменяются местами или останутся на месте?
Ответить Родитель Ссылка 0
0
14.04.2020 11:32:35
Олег, вспомни тему "Реверс" для одномерных массивов. Он производился относительно середины массива, независимо четное число или не четное. Здесь тот же реверс только не элементов массива а строк.
Ответить Родитель Ссылка 0
(Скрытый комментарий)
0
14.04.2020 17:46:27
Калашину Олегу
Совсем другое дело. Сам сделал?
Ответить Родитель Ссылка 0
0
13.04.2020 16:39:48
Сторожук Виктория

const N = 5; const M = 5;

var A: array[1..N, 1..M] of byte;

i, j, e: byte;

begin

   for i:= 1 to N do begin

       for j:= 1 to N do begin

           A[i, j]:= random(100);

           write(A[i, j]:3);

           end;

       writeln();

   end;

   writeln();

   for i:= 1 to N div 2 do begin

       for j:= i to M - i do begin

           e:= A[M - j + 1, i];

           A[M - j + 1, i]:= A[M - i + 1, M - j + 1];

           A[M - i + 1, M - j + 1]:= A[j, M - i + 1];

           A[j, M - i + 1]:= A[i, j];

           A[i, j]:= e;

       end;

   end;

   for i:= 1 to N do begin

       for j:= 1 to M do

           write(A[i, j]:3);

       writeln();

   end;

end.

Ответить Ссылка 0
0
13.04.2020 19:26:13
Сторожук Вике
Виктория, а кто сказал в задаче, что матрица квадратная? А если у тебя ввести матрицу, например 6х8 программа выдаёт ошибку (выход за пределы диапазона массива)
Ответить Родитель Ссылка 0
0
13.04.2020 18:01:46
Изибаева .Задача C.Так??
Program flip;
var a, b: array [1..9] of integer;  
i: integer;
begin
writeln('Исходная матрица(от 1 до 9): ');
for i := 1 to 9 do begin
read(a[i]);      
b[3] := a[1];      
b[6] := a[2];      
b[9] := a[3];      
b[2] := a[4];      
b[5] := a[5];      
b[8] := a[6];      
b[1] := a[7];      
b[4] := a[8];      
b[7] := a[9];
write;
end;
writeln('Результат: ');
writeln(b[1], ' ',b[2],' ', b[3]);  
writeln(b[4],' ', b[5],' ', b[6]);      
writeln(b[7],' ', b[8],' ', b[9]);
end.
Ответить Ссылка 0
0
13.04.2020 19:20:08
Изибаевой Анне
Нет, Анна, не так. У тебя в программе нет даже матрицы.
Ответить Родитель Ссылка 0