Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Шишкин / 5
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №5.
Программирование на языках высокого уровня
Тема: “Линейная алгебра”
Выполнил: студент Шишкин Д.В.
Проверил: Ларионов Н.В.
Москва 2011.
1.Условия задания:
Осуществить циклический сдвиг элементов квадратной матрицы размером МхN вправо на К элементов таким образом: элементы первой строки сдвигаются в последний столбец снизу вверх, из него – в последнюю строку справа налево, из неё – в первый столбец снизу вверх, из него - в первую строку; для остальных элементов аналогично.
2. a) Входные данные:m,n,k,а[i][j].
б) Выходные данные: a[i][j].
в) Рабочие данные:
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); } 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; }