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

Лабораторный практикум

.pdf
Скачиваний:
48
Добавлен:
15.06.2021
Размер:
3 Mб
Скачать

using namespace std; typedef int matr[10][10]; typedef int mas[10];

//Функция формирования матрицы void input(matr a, int n, int m)

{

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

for(int j = 0;j<m;j++) a[i][j]=rand()/100 - 100;

}

//Функция вывода значений матрицы

void output(matr a, int n, int m)

{

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

{

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

cout << setw(6) << a[i][j]; cout << endl;

}

}

// Функция формирования массива

void form(matr a, mas b, int n, int m)

{

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

{

b[i] = 0;

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

if (a[i][j] % 5 == 0)b[i]++;

}

}

//Функция нахождения максимального элемента в масси-

ве

int max(mas b, int n)

{

int maxx = b[0];

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

if (b[i]>maxx)maxx = b[i]; return maxx;

}

//Функция вывода значений массива

void output_mas(mas a, int m)

{

for (int i = 0; i<m; i++) cout << setw(6) << a[i]; cout << endl;

}

113

int main()

{

setlocale(LC_CTYPE, "Russian"); matr a, b;

mas p, q; input(a, 10, 10);

cout << "Матрица A>" << endl; output(a, 10, 10);

input(b, 10, 10);

cout << "Матрица B>" << endl; output(b, 10, 10);

form(a, p, 10, 10); form(b, q, 10, 10);

cout << "Массив P" << endl; output_mas(p, 10);

cout << "Массив Q" << endl; output_mas(q, 10);

cout << "Максимальный элемент в P = "<<max(p,10)<<

" Максимальный элемент в Q = "<< max(q,10) << endl;

}

По я сн е н ия к пр о гр ам м е . Функция max в отличие от остальных функций программы возвращает результат - наибольшее значение одномерного массива, поэтому при выводе на экран в операторе cout использовано обращение к функции max. Можно было определить переменную, например k, и присвоить ей возвращаемое функцией max значение: k=max(p,10);, а затем вывести значение переменной k на экран: cout << "Максимальный элемент в P = "<<k;

Результат выполнения программы представлен на рис.5. Пример 3. Даны массивы A(7), B(5), C(9) и D(9). Вычислить

 

7

5

 

 

 

ai

ln bj

 

 

p

i 0

j 0

 

.

 

 

 

 

9

9

 

 

 

 

sin ck * dn

 

 

 

k 0

 

n 0

 

 

Решение. Формирование и вывод массива, а также вычисление произведения элементов массива оформим с помощью функций.

114

Рис.5. Результат выполнения программы к примеру 2

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

#include <iostream>

 

#include <iomanip>

 

using

namespace std;

 

void input(double a[], int n)

 

{

 

 

 

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

a[i]=i+1;

}

void output ( double a[], int n)

{

cout<<"Массив:"<<endl;

for(int i=0;i<n;i++) cout<<setw(6)<<a[i]; cout<<endl;

}

double mult(double b[],int n)

{

double p=1.0;

for(int i=0;i<n;i++) p*=b[i]; return p;

115

}

int main()

{

setlocale(LC_CTYPE,"Russian"); double a[7],b[5],c[9],d[9];

input(a,7);input(b,5);input(c,9);input(d,9);

output(a,7);output(b,5);output(c,9);output(d,9); double p; p=(mult(a,7)+log(mult(b,5)))/(sin(mult(c,9))*sqrt(

mult(d,9)));

cout<<"p="<<p<<endl;

}

По я сн е н ия к пр о гр а м м е . В качестве параметров у всех функций используется указатель на первый элемент массива и переменная, значение которой равно количеству элементов одномерного массива, поскольку массивы имеют разную размерность. При формировании массива к каждому следующему элементу прибавляется единица (чтобы избежать вычисления большого значения у произведения в данном примере). Функция, вычисляющая произведение значений элементов, возвращает вычисленное значение типа double, другие функции значений не возвращают, поэтому используется тип возвращаемого результата void.

Результат выполнения программы представлен на рис.6.

Рис.6. Результат выполнения программы к примеру 3

116

Пример 4. Для целочисленных матриц А и В 5 6 сформировать одномерные массивы P и Q, состоящие из элементов матрицы, кратных пяти.

Решение. Заранее не известно, сколько значений исходной матрицы будет кратно пяти, может быть ситуация, когда все элементы войдут в одномерный массив, поэтому определим одномерный массив из 30 элементов. В функции, которая будет формировать одномерный массив, вычислим реальное количество элементов одномерного массива, и вернем это значение в основную функцию для вывода на экран одномерного массива, состоящего из реального количества элементов. Результат выполнения программы приведен на рис. 7.

Рис.7. Результат выполнения программы к примеру 4

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

#include <iostream> #include <iomanip> #include <time.h>

using namespace std; typedef int matr[5][6]; typedef int mas[30];

// Функция формирования матрицы void input(matr a, int n, int m)

{

117

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

for (int j = 0;j<m;j++)a[i][j]=rand()/100 - 100;

}

// Функция вывода значений матрицы void output(matr a, int n, int m)

{

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

{

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

cout << setw(6) << a[i][j]; cout << endl;

}

}

// Функция формирования массива

void form(matr a, mas b, int n, int m, int& k)

{

k = 0;

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

{

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

if (a[i][j] % 5 == 0)b[k++]=a[i][j];

}

}

// Функция вывода значений массива void output_mas(mas a, int m)

{

for (int i = 0; i<m; i++) cout << setw(6) << a[i]; cout << endl;

}

int main()

{

setlocale(LC_CTYPE, "Russian"); matr a, b;

mas p, q; input(a, 5, 6);

cout << "Матрица A>" << endl; output(a, 5, 6);

input(b, 5, 6);

cout << "Матрица B>" << endl; output(b, 5, 6);

int r, s;

form(a, p, 5, 6,r); form(b, q, 5, 6,s);

cout << "Массив P" << endl;

118

output_mas(p, r);

cout << "Массив Q" << endl; output_mas(q,s);

}

По я сн е н ия к пр о гр ам м е . В функции form использован пара- метр-переменная k, через который после формирования одномерного массива возвращается количество его элементов. Параметр передается как ссылка на фактическое данное, описанное в основной функции. Если не указать оператор &, то вычисленное внутри функции значение k не будет передано в основную функцию. Можно возвращать вычисленное значение количества элементов одномерного массива как показано ниже:

int form(matr a, mas b, int n, int m)

{

int k = 0;

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

{

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

if (a[i][j] % 5 == 0)b[k++]=a[i][j];

}

return k;

}

В этом случае в основной функции используем следующее обращение к form:

int r, s;

r=form(a, p, 5, 6); s=form(b, q, 5, 6);

Порядок выполнения работы

1.Разработать и выполнить программу в соответствии с вариантом задания.

2.Результаты выполнения программы занести в отчет по работе.

3.Показать результаты работы преподавателю.

119

Требования к отчету

Отчет должен содержать:

1)наименование лабораторной работы;

2)формулировку задания;

3)текст программы для варианта задания;

4)результат выполнения программы (скриншот).

120

Варианты заданий

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

 

Задание

п/п

 

 

 

1

Задать значения целочисленным элементам матриц А и B 3 6 и

 

сформировать массивы С и D, состоящие из максимальных эле-

 

ментов столбцов матриц А и В соответственно

2

Задать значения вещественным элементам массивов А(6), B(3),

 

C(10) и вычислить Y = max(max(A), max(B), max(C))

3

Задать значения вещественным элементам матриц А и Q 2 4 и

 

сформировать массивы B и R, состоящие из минимальных эле-

 

ментов столбцов матриц A и Q соответственно

4

Задать значения целочисленным элементам массивов А(8), B(5),

 

7

4

5

 

C(6) и вычислить S ai

bj ck

 

i 0

j 0

k 0

 

 

5

Задать значения целочисленным элементам матриц P и Q 4 8 и

 

сформировать массивы С и D, состоящие из максимальных эле-

 

ментов строк матриц P и Q соответственно

6

Задать значения целочисленным элементам матриц W и Z 4 6 и

 

сформировать массивы T и S соответственно из элементов матриц

 

W и Z, больших заданного числа Р

 

7

Задать значения вещественным элементам массивов A и B 4 4 и

 

сформировать массивы X и Y из элементов, стоящих на главных

 

диагоналях матриц А и В соответственно

8

Задать значения целочисленным элементам матриц С и D 6 6 и

 

сформировать массивы S и T соответственно из элементов той

 

строки матрицы, у которой элемент на главной диагонали мини-

 

мален

 

 

121

 

 

 

 

 

 

 

Продолжение

 

 

Задание

 

 

 

 

п/п

 

 

 

 

 

 

 

9

Задать значения целочисленным элементам

матриц A и B 7 5

 

и сформировать массивы X и Y соответственно, каждый элемент

 

которых является произведением элементов строк, попадающих

 

в интервал [m; n]

 

 

 

 

 

 

10

Задать значения целочисленным элементам матриц P и Q 4 7

 

и сформировать массивы R и T из сумм отрицательных элемен-

 

тов строк матриц P и Q соответственно

 

 

 

11

Задать значения целочисленным элементам массивов М(7), L(6),

 

5

 

7

 

 

6

 

 

C(8) и вычислить y

(l

2) c

 

0,5

(m 4)

 

i 0

i

j 0

j

 

n 0

n

 

Вычисление произведение организовать с использованием

 

единственной функции

 

 

 

 

 

 

12

Задать значения целочисленным элементам матриц А и B 3 4

 

и сформировать массивы X и Y, каждый элемент из которых

 

является элементом матрицы, кратным P

 

 

13

Задать значения целочисленным элементам матриц P и Q 6

 

6 и сформировать массивы R и T из элементов, меньших наи-

 

большего элемента среди элементов главной диагонали матриц

 

P и Q соответственно

 

 

 

 

 

 

14

Задать значения вещественным элементам матриц С и D 5 5 и

 

сформировать массивы X и Y из произведений положительных

 

элементов столбцов матриц C и D соответственно

15

Задать значения вещественным элементам

массивов A(6), B(6),

 

C(6) и вычислить X = min(A) + min(B) min(C)

 

16

Задать значения целочисленным элементам матриц M и N 5 7

 

и сформировать массивы С и D, состоящие из количества отри-

 

цательных элементов строк матриц M и N соответственно

17

Задать значения вещественным элементам матриц С и D 5 5 и

 

сформировать массивы X и Y из сумм положительных элемен-

 

тов строк матриц C и D соответственно

 

 

 

122