Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Циклический сдвиг элементов квадратной матрицы С++.

39K
28 мая 2008 года
lostking
3 / / 28.05.2008
нужно осуществить циклический сдвиг элементов кважратной матрицы размерности MxN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку спрова налево, из нее - в первый стобец снизу вверх, их него - в первую строку; для остальных элементов аналогично.

заранее спасибо.

[COLOR="Red"]Читаем Правила раздела Студентам,такие названия тем не допускаются. Давай темам впредь осмысленные названия.[/COLOR]модератор.
13K
29 мая 2008 года
specter
113 / / 28.09.2007
Цитата: lostking
элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку спрова налево, из нее - в первый стобец снизу вверх, их него - в первую строку; для остальных элементов аналогично.


Сам понял что сказал? Давай пример

39K
30 мая 2008 года
lostking
3 / / 28.05.2008
пример
дана матрица
1 2 3 4
5 6 9 6
2 3 7 5
9 4 8 5
если k к примеру ровно 2 то получится такая матрица
2 5 1 2
9 7 3 3
4 9 6 4
8 5 5 6
кароче получается что она крутится вокруг центра
13K
02 июня 2008 года
specter
113 / / 28.09.2007
Цитата: lostking
пример
дана матрица
1 2 3 4
5 6 9 6
2 3 7 5
9 4 8 5
если k к примеру ровно 2 то получится такая матрица
2 5 1 2
9 7 3 3
4 9 6 4
8 5 5 6
кароче получается что она крутится вокруг центра


Так бы сразу и сказал, что крутится вокруг центра ;) но все равно несколько непонятно... для твоего примера если крутить вокруг центра результат должен быть по идее такой:
9 2 5 1
4 3 6 2
8 7 9 3
5 5 6 4
Где ошибка?

37K
02 июня 2008 года
iyulka
12 / / 06.05.2008
specter, крутить надо на заданное количество символов, а не на 90 градусов =)
39K
03 июня 2008 года
lostking
3 / / 28.05.2008
всем спасибо я уже сам написал
кому интересно вот прога
Код:
#include <stdio.h>
#include <conio.h>
double GG ( double a[10][10], int p,int n,int m)
{
          int i, j, k ;
          double temp,temp2,temp3;
 for(i=0; i < n/2; i++)
 {
  for(int z = p; z>0 ; z--) //кол-во сдвигов - к
  {
   for(j = i, temp = a[j]; j < n-1-i; j++)
   {
    temp2 = a[j+1];
    a[j+1] = temp;
    temp=temp2;
   }
   for(k = i+1; k < m-i; k++)
    {
    temp3=temp;
    temp=a[k][j];
    a[k][j]=temp3;
    }
   for( j--, k--; j >= i; j--)
    {
    temp3=temp;
    temp=a[k][j];
    a[k][j]=temp3;
    }
   for(j++, k--; k >= i; k--)
    {
    temp3=temp;
    temp=a[k][j];
    a[k][j]=temp3;
  }}}
  return a[10][10];

}

int main()
{
 int p, n, m, i, j;
 double a[10][10];
       {
        printf("Vvedite n,m \n");
        scanf ("%d %d",&n,&m);
        /*n=4;
        m=4;*/
        }

        printf("Vvedite elementy matricy\n");
        for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
          printf("a[%d][%d]=",i,j);
          scanf("%lf",&a[j]);
         }
         for(i=0;i<n;i++)
          {
           for(j=0;j<m;j++)
            {
             printf("%2.lf", a[j]);
            }
             printf ("\n");
            }
          {printf("Vvedite k\n");
          scanf ("%d",&p);
          GG(a,p,n,m);
          for(i=0;i<n;i++)
          {
           for(j=0;j<m;j++)
            {
             printf("%2.lf", a[j]);
            }
             printf ("\n");
            }
getch();
  }
return 0;
}

[COLOR="Red"]Код оформляй по Правилам,при помощи тегов.[/COLOR]
50K
07 июня 2009 года
Solnthe
1 / / 07.06.2009
а как сделать так, чтобы "внешний" квадрат сдвигался на n-1 элемент, внутренний на n-3 и т д .?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог