Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛБ3

.docx
Скачиваний:
1
Добавлен:
07.01.2022
Размер:
137.11 Кб
Скачать

ФГБОУ ВО

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

Кафедра ТК

ОТЧЕТ

по лабораторной работе № 3

по дисциплине «Программирование»

Вариант № 5

Выполнил: студент гр. ИВТ-114

Балыбердин Н.А.

Проверил: доцент каф. ТК

Федорова Н.И.

Уфа 2017

Тема работы: Функции. Многомерные массивы в качестве параметров функций.

Цель работы: Навык составления и отладки простейших программ на языке С++

Задачи работы:

  • написание программы на языке С++ с использованием различных типов функций.

  • тестирование работоспособности программы для различных исходных данных.

Вариант № 5

Задание: Выполнить следующее задание: Заданы квадратные матрицы А и В и С.

Выполнение задания: D=(A+B+C)m

Решение задачи:

Входные данные: N, A, B, C;

Выходные данные: D;

Схема алгоритма работы программы:

Текст программы:

#include<iostream>

#include<conio.h>

#include<math.h>

using namespace std;

void inputMatr(double **x, int n);

void outputMatr(double **x, int n);

void addMatr(double **x, double **y, int n, double **z);

void powMatr(double **x, int n, int m, double **z);

void main()

{

setlocale(LC_ALL, "Russian");

double **a, **b, **c, **d, **ab1, **ab2, **e;

int i, n, m;

cout << "\tФункции. Многомерные массивы в качестве параметров функций.\n\n";

cout << "Введите размер матрицы n="; cin >>n;

cout << "Введите степень m="; cin >> m;

a=new double *[n];

b=new double *[n];

c=new double *[n];

d=new double *[n];

ab1=new double *[n];

ab2=new double *[n];

e=new double *[n];

for (i=0; i<n; i++)

{

a[i]=new double[n];

b[i]=new double[n];

c[i]=new double[n];

d[i]=new double[n];

ab1[i]=new double [n];

ab2[i]=new double [n];

e[i]=new double[n];

}

cout << "\nВвод матриц A, B, C" << endl;

cout << "Введите матрицу A:\n";

inputMatr(a, n);

cout << "\nВведите матрицу B: \n";

inputMatr(b, n);

cout << "\nВведите матрицу C: \n";

inputMatr(c, n);

cout << endl;

cout << "Вывод результата: " << endl << "Матрица D:" << "\n";

addMatr(a, b, n, ab1);

addMatr(ab1, c, n, ab2);

powMatr(ab2, n, m, e);

outputMatr(e, n);

getch();

for (i = 0; i < n; i++)

{

delete[]a[i];

delete[]b[i];

delete[]c[i];

delete[]d[i];

delete[]a;

delete[]b;

delete[]c;

delete[]d;

}

}

void inputMatr(double **x, int n)

{

int i, j;

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

{

cout << "(" << i+1 << "," << j+1 << ")=";

cin >> x[i][j];

}

}

void outputMatr(double **x, int n)

{

int i, j;

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

{

cout << "(" << i+1 << "," << j+1 << ")=" << x[i][j];

cout << endl;

}

}

void addMatr(double **x, double **y, int n, double **z)

{

int i, j;

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

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

}

void powMatr(double **x, int n, int m, double **z)

{

int **b, **c, i, j, k, l;

if (m == 0)

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

if (i == j) x[i][j] = 1;

else x[i][j] = 0;

else

{

b = new int*[n];

c = new int*[n];

for (i = 0; i < n; i++)

{

b[i] = new int[n];

c[i] = new int[n];

}

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

{

b[i][j] = x[i][j];

c[i][j] = 0;

}

for (l = 0; l < m - 1; l++)

{

for (i = 0; i < n; i++)

for (k = 0; k < n; k++)

for (j = 0; j < n; j++)

c[i][j] += x[i][k] * b[k][j];

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

{

b[i][j] = c[i][j];

c[i][j] = 0;

}

}

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

z[i][j] = b[i][j];

}

}

Тестовый пример:

Вывод: В ходе выполнения работы были получены навыки работы с функциями и динамическими массивами на языке С++.

Соседние файлы в предмете Программирование