Скачиваний:
24
Добавлен:
02.05.2014
Размер:
103.42 Кб
Скачать

Уфимский государственный авиационный технический университет

Кафедра АПрИС.

Отчёт по лабораторной работе № 1

по программированию

«Функции».

Выполнил: студент группы САПР -130 Манаев Р. Н.

Проверила: старший преподаватель кафедры АПрИС Бежаева О. Я.

УФА 2007.

Цель работы: Научиться составлять программы, используя функции.

Вариант № 18.

Постановка задачи:

Заданы 2 квадратные матрицы А и В. Вычислить матрицу:

.

    1. Блок схем.

нет

да

нет

да

да

нет

да

нет

да

Нет нет

да да

нет нет

да да

нет

да нет

да

нет

да

да

нет

нет да

нет

да

да

    1. Листинг программы.

#include<iostream.h>

#include<math.h>

#define N 3

#define M 2

void powm(float x[M][M], int k, float z[M][M]);

void mult(float x[M][M], float y[M][M], float z[M][M]);

void summ(float x[M][M], float y[M][M], float z[M][M]);

void outputm(float m[M][M]);

void copym(float x[M][M], float y[M][M]);

void inputm(float x[M][M]);

main()

{

static float c[M][M], s[M][M];

float t1[M][M], t2[M][M], t3[M][M];

float a[M][M], b[M][M];

inputm(a);

inputm(b);

int n1, n2;

n1 = N;

n2 = 0;

while(n1>=0 || n2 <= N)

{

copym(s,c);

powm(a,n1,t1);

powm(b,n2,t2);

mult(t1, t2, t3);

summ(s, t3, c);

n1--;

n2++;

}

outputm(c);

}

void mult(float x[M][M], float y[M][M], float z[M][M])

{

float s;

for(int i=0;i<M;i++)

{

for(int j=0;j<M;j++)

{

s=0;

for(int k=0;k<M;k++)

{

s=x[i][k]*y[k][j]+s;

z[i][j]=s;

}

}

}

}

void summ(float x[M][M], float y[M][M], float z[M][M])

{

for(int i=0;i<M;i++)

{

for(int j=0;j<M;j++)

{

z[i][j]=x[i][j]+y[i][j];

}

}

}

void powm(float x[M][M], int k, float result[M][M])

{

float t[M][M];

if (k==0)

for(int i=0;i<M;i++)

for(int j=0;j<M;j++)

result[i][j] = (i==j) ? 1:0;

if (k==1)

copym(result,x);

if (k>1)

{

copym(t,x);

for (int i=1;i<k; i++)

{

mult(t,x,result);

copym(t,result);

}

}

}

void outputm(float m[M][M])

{

for(int i=0;i<M;i++)

{

cout<<endl;

for(int j=0;j<M;j++)

{

cout.width(4);

cout<<m[i][j]<<" ";

}

}

cout << endl;

}

void copym( float dest[M][M], float source[M][M])

{

for(int i=0;i<M;i++)

for(int j=0;j<M;j++)

dest[i][j]=source[i][j];

}

void inputm(float x[M][M])

{

cout<<"\n"<<"vvedite dvumerniy massiv "<<"\n";

for(int i=0;i<M;i++)

{

for(int j=0;j<M;j++)

{

cin>>x[i][j];

}

}

}

    1. Тестирование программы.

Вывод:

Выполнив лабораторную работу, мы научились составлять программы, используя функции.