Цитата:
Сообщение от Света=)
Ну да, 1ю задачу можно было по разному подумать, по идеи "которые делятся ХОТЯ БЫ НА ОДНО из чисел (2, 3, 5)" но тогда получается, что это все числа кроме 1, так что наверно всё таки "которые делятся ОДНОВРЕМЕННО на 2, 3 и 5". Извени, что дала такую задачку неуточнив у препода, что тут спрашивается. Вижу пришлось сильно попотеть=( Пасиб за неё.=)
|
Эх, Света - да если бы на этом непонятки закончились! Рассмотрим вторую задачу:
Цитата:
Сообщение от Света=)
2) Поменять местами треугольники квадратной матрицы, расположенные выше и ниже боковой диагонали.
|
Во-первых, что это за "боковая диагональ"? Мне известны только главная и побочная. Ну ладно, будем считать что "боковая" это побочная. Но вот дальше... Видите ли, "поменять местами" два указанных треугольника можно двояко:
1. "Зеркально отразить" числа относительно побочной диагонали.
2. Мысленно воткнуть в самый центр матрицы ось, перпендикулярную плоскости, на которой написана матрица (неважно, попадет эта ось в элемент или нет - это зависит от четности) и, не трогая побочную диагональ, провернуть ось вместе с треугольниками на 180°.
Иными словами - считать матрицу осесимметричной (где ось - побочная диагональ) или центрально-симметричной?
Предлагаемая программа реализует оба способа в указанной последовательности:
Код:
Const
N=5;
Var
A,B:ARRAY[1..N,1..N] of Integer;
i,j,D:Integer;
BEGIN
Randomize;
For i:=1 to N do
For j:=1 to N do
begin
D:=Random(10);
A[i,j]:=D-5;
end;
WriteLn('Initial matrix:');
For i:=1 to N do
begin
For j:=1 to N do
Write(A[i,j]:4);
WriteLn;
end;
WriteLn('Transformed matrix (var.1):');
For i:=1 to N do
For j:=1 to N do
B[i,j]:=A[N-j+1,N-i+1];
For i:=1 to N do
begin
For j:=1 to N do
Write(B[i,j]:4);
WriteLn;
end;
WriteLn('Transformed matrix (var.2):');
For i:=1 to N do
For j:=1 to N do
B[i,j]:=A[N-i+1,N-j+1];
For i:=1 to N do B[i,N-i+1]:=A[i,N-i+1];
For i:=1 to N do
begin
For j:=1 to N do
Write(B[i,j]:4);
WriteLn;
end;
Readln;
END.