Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
17.04.2015
Размер:
30.72 Кб
Скачать

Московский Государственный Университет Леса

ФЭСТ ВТ-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; }

4.Тестовые задачи:

\\\ n=3 m=3

\\\ a[0][0]=1

a[0][1]=2

a[0][2]=3

a[1][0]=4

a[1][1]=5

a[1][2]=6

a[2][0]=7

a[2][1]=8

a[2][2]=9

1 2 3

4 5 6

7 8 9

\\\ K=2 7 4 1

8 5 2

9 6 3