Программирование на C / C++ / Лабораторные работы2 / УГАТУ АСОИ-136 пр-ние на ЯВУ лаб.№5 вар.№25_Рустам
.docУфимский государственный авиационный технический университет
Кафедра АСУ
Отчёт по лабораторной работе №5
по дисциплине ”Программирование на ЯВУ”.
вариант №25.
Выполнил: студент группы АСОИ-136
Хайдаршин Р.Р. Проверил: доцент кафедры АПрИС
Фёдорова Н.И.
Уфа 2007.
Тема: Многомерные массивы.
Цель работы:
Вариант №25.
Задание:
Задана матрица {aij} размерности N*N. Из ее элементов сформировать одномерный массив
{bk} k=1, N2 в следующем порядке:
Решение:
Нужно создать такую программу, которая превращала данную матрицу в одномерный массив нужной последовательности.
Блок-схема
Текст программы на С++
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{const n=3;
double a[n][n],b[n*n];
int k,i,j,t,x;
clrscr();
cout<<"VVedite matricy\n";
for(i=0;i<n;i++)
{cout<<"a["<<i+1<<"]=";
for(j=0;j<n;j++)
cin>>a[i][j];
}
cout<<endl;
k=1;
for(t=1;t<=n;t=t+2)
{
for(i=0;i<t;i++)
{
b[k]=a[i][i+n-t];
k++;
}
if(i==n)break;
for(i=t;i>=0;i--)
{
b[k]=a[i][i+n-t-1];
k++;
}
}
x=2;
if(n%x==0)
for(t=n-1;t>0;t=t-2)
{ for(i=n-t;i<n;i++)
{
b[k]=a[i][i-n+t];
k++;
}
for(i=n-1;i>n-t;i--)
{
b[k]=a[i][i-n+t-1];
k++;
}
}
else
for(t=n-1;t>=0;t=t-2)
{
for(i=n-1;i>=n-t;i--)
{
b[k]=a[i][i-n+t];
k++;
}
for(i=n-t+1;i<n;i++)
{
b[k]=a[i][i-n+t-1];
k++;
}
}
for(k=1;k<=n*n;k++)
cout<<b[k]<<" ";
getch();
}
Проверка:
Матрица: 10 4 3 1
11 9 5 2
15 12 8 6
16 14 13 7
Получаем: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;
Матрица: 11 10 4 3 1
19 12 9 5 2
20 12 13 8 6
24 21 17 14 7
25 23 22 16 15
Получаем: 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.