Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2008, 21:08   #1
Sanakan
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 47
По умолчанию Повернуть двумерный массив на 180 градусов - задача на Pascal'е

Подскажите плиз как решить задачу...Повернуть двумерный массив на 180 градусов...
Sanakan вне форума Ответить с цитированием
Старый 09.12.2008, 21:42   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

По часовой ?
Тоесть элемент 1.1 станет 1.4 ??
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 09.12.2008, 23:03   #3
Sanakan
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 47
По умолчанию

Массив:
1 2 3
4 5 6
7 8 9

Maссив 180 гр
9 8 7
6 5 4
3 2 1
Sanakan вне форума Ответить с цитированием
Старый 11.12.2008, 00:17   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

люблю задачи простые, но заковыристые ;-)
вот. решение...
размер матрицы - n можно задавать любое...
Код:
{поворот квадратной матрицы на 180 градусов}
const n = 3;
var M:array[1..n,1..n] of integer;
i,j,k : integer;

  procedure   OutMatr;
  var i,j : integer;
  begin
    WriteLn('-------------------------');
    for i:=1 to n do begin
      for j:=1 to n do
        Write(M[i,j]:3,' ');
      WriteLn;
    end;
    WriteLn('-------------------------');
    WriteLn;
  end;

begin
  k:=1;
  for i:=1 to n do
   for j:=1 to n do begin M[i,j]:=k; Inc(k) end;

  OutMatr;

  for i:=1 to (n div 2)  do
   for j:=1 to n do
     begin
       k:=M[i,j];  M[i,j] := M[n-i+1,n-j+1]; M[n-i+1,n-j+1]:=k;
     end;

  {если матрица нечётного порядка n=3,5,7 и т.д.
     то остался необработанным центральный ряд. пройдёмся по нему!}
   if Odd(n) then begin
     i:= (n div 2)+1;
     for j:=1 to (n div 2) do begin
       k:=M[i,j];  M[i,j] := M[n-i+1,n-j+1]; M[n-i+1,n-j+1]:=k;
     end;
   end;

  OutMatr;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.12.2008, 19:38   #5
Sanakan
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 47
По умолчанию

Спасибо огромное!!!И если не сложно напишите еще на С++ а то к сессии надо сдать\...Заранее спасибо!

Сдать надо в пн...очень сильно нужна помощь...

Последний раз редактировалось Stilet; 14.12.2008 в 13:04.
Sanakan вне форума Ответить с цитированием
Старый 14.12.2008, 12:56   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я, к огромному своему стыду, C не знаю ;-(
Если Вы знаете (хотя бы немного!) то просто переписывайте с Pascal'я, алгоритм тот же. Просто синтаксис чуть-чуть другой!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2008, 14:47   #7
Sanakan
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 47
По умолчанию

Я его плохо знаю..и тут тоже нужна помощь)
Пометил вопросами проблемные места.

Код:
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
#include<stdlib.h>
int main()
{
  int a[10][10], n, i, j, k, q;
  clrscr();
  cout<<"Vvedite razmer matrix"<<endl;
  cin>>n;
  cout<<"Vvedite matrix 4x4"<<endl;
  for (i=0;i<n;i++)
    for (j=0;j<n;j++)
      cin>>a[i][j];
  for (i=0;i<n;i++)
    {cout<<endl;
       for (j=0;j<n;j++)
         cout<<setw(4)<<a[i][j];
    }
  cout<<endl;
  div_t divresult;
  divresult=div(n,2);
     for (i=0; i<divresult.quot; i++)  //??
       for (j=0; i<n; j++)
        {
          k=a[i][j];
          a[i][j]=a[n-i][n-j];
          a[n-i][n-j]=k;
        }
   if                    // ???
    { i=divresult.quot+1;
        for (j=0; i<divresult.quot; j++)
           {
          k=a[i][j];
          a[i][j]=a[n-i][n-j];
          a[n-i][n-j]=k;
           }
           
  for (i=0;i<n;i++)
    {cout<<endl;
        for (j=0;j<n;j++)
            cout<<setw(4)<<a[i][j];
  }
getch();
return 0;
}

Последний раз редактировалось Sanakan; 15.12.2008 в 00:16.
Sanakan вне форума Ответить с цитированием
Старый 15.12.2008, 00:16   #8
Sanakan
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 47
По умолчанию

Народ хелп...
Sanakan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как повернуть изображение на 180 градусов? kl45gp Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 11.05.2013 13:10
Двумерный массив Анжелика Помощь студентам 3 29.12.2008 21:23
Двумерный массив apetr Паскаль, Turbo Pascal, PascalABC.NET 2 30.11.2008 12:32
Двумерный массив Jodu Помощь студентам 18 05.12.2007 22:44