Показать сообщение отдельно
Старый 19.12.2010, 13:57   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Света=) Посмотреть сообщение
Ну да, 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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070