Программирование на C / C++ / Лабораторные работы2 / УГАТУ АСОИ-136 пр-ние на ЯВУ лаб.№5 вар.№21
.docУфимский государственный авиационный технический университет
Кафедра АСУ
ОТЧЕТ по лабораторной работе №5
по дисциплине ”Программирование на ЯВУ”
вариант №__
Выполнил: студент группы АСОИ-136
Макаров М. Проверил: доцент кафедры АПрИС
Фёдорова Н.И.
Уфа 2007.
Тема: Многомерные массивы.
Цель работы:
Вариант №__.
Задание:
Задана матрица {aij} размерности N*N. Из ее элементов сформировать одномерный массив
{bk} k=1, N2 в следующем порядке:
Решение:
Нужно создать такую программу, которая превращала данную матрицу в одномерный массив нужной последовательности:
9 |
10 |
11 |
12 |
13 |
8 |
21 |
22 |
23 |
14 |
7 |
20 |
25 |
24 |
15 |
6 |
19 |
18 |
17 |
16 |
5 |
4 |
3 |
2 |
1 |
Блок-схема
Текст программы на С++
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{
const n=4;
double a[n][n],b[n*n];
int i,j,k,l,m;
clrscr(); m=n;
cout<<"\n\n ----vvedite matricy----\n\n";
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<" a["<<i+1<<","<<j+1<<"]=";
cin>>a[i][j];
}
}
cout<<endl<<endl<<" ---orginal matricy---"<<endl;
for(i=0;i<n;i++)
{cout<<endl<<" ";
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
}
k=1;
for(l=n-1;l>=(n/2);l--)
{ i=l;
for(j=l;j>m-l-1;j--)
{
b[k]=a[i][j];
k++;
}
j=m-l-1;
for(i=l;i>m-l-1;i--)
{
b[k]=a[i][j];
k++;
}
i=m-l-1;
for(j=m-l-1;j<l;j++)
{
b[k]=a[i][j];
k++;
}
j=l;
for(i=m-l-1;i<l;i++)
{
b[k]=a[i][j];
k++;
}
}
if((m%2)!=0)
b[k]=a[n/2][n/2];
cout<<endl<<endl<<" b[k]; ";
for(k=1;k<=n*n;k++)
cout<<b[k]<<" ";
getch();
}Проверка:
Матрица: 7 8 9 10
6 15 16 11
5 14 13 12
4 3 2 1
Получаем: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;
Матрица: 13 14 15 16 17 18 19
12 33 34 35 36 37 20
11 32 45 46 47 38 21
10 31 44 49 48 39 22
9 30 43 42 41 40 23
8 29 28 27 26 25 24
7 6 5 4 3 2 1
Получаем: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49.