6 отчёт Смолева В.А
..docxПоволжский Государственный Университет Телекоммуникаций и Информатики
Кафедра ПОУТС
Лабораторная работа №6
Двумерные массивы
Выполнила :
Студентка гр. ИСТ 74У
Смолева В.А.
Проверили:
Д.т.н., проф. Лиманова Н.И.
Асс. Горелов Г.А.
Самара 2017
Задание: Научиться работать с массивами, производить над ними разные действия.
Вариант 14
Осуществить циклический сдвиг элементов квадратной матрицы размером М Х N вправо на k элементов таким образом: элементы первой строки сдвигаются в последний столбец сверху вниз, из него – в последнюю строку справа налево, из нее – в первый столбец снизу вверх, из него – в первую строку; для остальных элементов – аналогично.
Листинг программы
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#define R 4
#define C 4
using namespace std;
int main()
{
int p,k, m, i, j, temp, temp2,temp3;
int a[R][C];
setlocale(LC_ALL, "");
m=4;
cout<<"Введите элементы массива"<<endl;
for(i=0;i<m;i++) //ввод чисел в двумерный массив
{for(j=0;j<m;j++)
cin>>a[i][j];
cout<<endl;}
cout<<"Вывод массива"<<endl;
for(i=0;i<m;i++) //вывод двумерного массива
{for(j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
cout<<endl;
cout<<"Введите количество сдвигов: ";
cin>>p;
for(i = 0; i < R/2; i++)//количество перемещаемых кругов
{
for(int sdvig = p; sdvig; sdvig--) //количество сдвигов
{
for(j = i, temp = a[i][j]; j < C-1-i; j++) //замена элементов на одной строке
{
temp2 = a[i][j+1];
a[i][j+1] = temp;
temp = temp2;
}
for(k = i+1; k < R-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;}
}
}
for(i=0;i<m;i++) //вывод двумерного массива
{for(j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
system("pause");
return 0;}
Пример выполнения программы