#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]модератор.
Цитата: lostking
элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку спрова налево, из нее - в первый стобец снизу вверх, их него - в первую строку; для остальных элементов аналогично.
Сам понял что сказал? Давай пример
дана матрица
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
кароче получается что она крутится вокруг центра
Цитата: 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
кароче получается что она крутится вокруг центра
дана матрица
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
Где ошибка?
specter, крутить надо на заданное количество символов, а не на 90 градусов =)
кому интересно вот прога
Код:
[COLOR="Red"]Код оформляй по Правилам,при помощи тегов.[/COLOR]
а как сделать так, чтобы "внешний" квадрат сдвигался на n-1 элемент, внутренний на n-3 и т д .?