Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Тумор / Лабораторная №5
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №5.
Программирование на языках высокого уровня
Тема:”Двумерные массивы”
Выполнил студент: Тумор С.В.
Проверил: Ларионов Н.В.
Москва 2011 г.
1. Условия задания:
Осуществить циклический сдвиг элементов квадратной матрицы вправо на
k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него − в последнюю строку справа налево, из нее − в первый столбец снизу вверх, из него − в первую строку; для остальных элементов сдвиг выполняется аналогичным образом..
2. Блок-схема программы:
3. Листинг программы:
#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[i][j]; j < n-1-i; j++)
{
temp2 = a[i][j+1];
a[i][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[i][j]);
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%2.lf", a[i][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[i][j]);
}
printf ("\n");
}
getch();
}
return 0;
}
4. Тестовая задача: