Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 9 - Функции.doc
Скачиваний:
5
Добавлен:
11.09.2019
Размер:
227.84 Кб
Скачать

Int main()

{

int n, m;

double a, y1, y2;

//Вводим с клавиатуры значения переменных n, m и а

cout << "Enter n : ";

cin >> n;

cout << "Enter m : ";

cin >> m;

cout << "Enter a : ";

cin >> a;

//Вычисляем значение выражения с помощью первой функции и

//результат присваиваем переменной y1

y1 = f1(n, m, a);

//Вычисляем значение выражения с помощью второй функции.

//Вычисленный результат возвращается в фактический параметр y2,

//передаваемый по ссылке

f2(n, m, a, y2);

//Выводим на экран вычисленные значения выражения

// (они должны совпадать)

cout << "f1 = " << y1 << endl;

cout << "f2 = " << y2 << endl;

return 0;

}

Решить по вариантам:

Номер варианта

Расчетная формула (математическая функция)

1

2

3

4

5

6

7

8

9

10

11

12

13

Задание 2 – Использование вспомогательных функций

Пример. Даны три тела. Для каждого из них известна его масса и объем. Определить тело с минимальной плотностью (Определить функцию для вычисления плотности тела).

#include <iostream>

using namespace std;

//Определение вспомогательной функции для вычисления плотности тела.

//Параметры по значению: m - масса тела, V - объем тела.

//Возвращаемое функцией значение - вычисленная плотность тела.

double Density(double m, double V)

{

double p = m / V;

return p;

}

Int main()

{

double m1, m2, m3, V1, V2, V3;

double p1, p2, p3;

//Вводим массы и объемы трех тел

cout << "Enter m and V of first body : ";

cin >> m1 >> V1;

cout << "Enter m and V of second body : ";

cin >> m2 >> V2;

cout << "Enter m and V of third body : ";

cin >> m3 >> V3;

//Вычисляем их плотности, вызывая данную функцию

p1 = Density(m1, V1);

p2 = Density(m2, V2);

p3 = Density(m3, V3);

//Определяем тело с минимальной плотностью

if (p1 <= p2 && p1 <= p3)

cout << "First body has minimum density." << endl;

else if (p2 <= p1 && p2 <= p3)

cout << "Second body has minimum density." << endl;

else

cout << "Third body has minimum density" << endl;

return 0;

}

Решить задачу по вариантам, используя вспомогательные функции:

  1. Найти значение выражения . (Определить функцию для расчета факториала натурального числа).

  2. Даны два натуральных числа. Выяснить, в каком из них сумма цифр больше. (Определить функцию для расчета суммы цифр натурального числа).

  3. Даны два натуральных числа. Выяснить, в каком из них больше цифр. (Определить функцию для расчета количества цифр натурального числа.)

  4. Даны четыре различных числа. Определить максимальное из них (Определить функцию, находящую максимальное из двух чисел).

  5. Даны четыре различных числа. Определить минимальное из них (Определить функцию, находящую минимальное из двух чисел).

  6. Для данного натурального числа вычислить значение выражения (Определить функцию для вычисления суммы квадратов всех чисел из заданного диапазона).

  7. Для данного натурального числа вычислить значение выражения (Определить функцию для вычисления суммы кубов всех чисел из заданного диапазона).

  8. Найти значение выражения . (Определить функцию для расчета двойного факториала натурального числа следующим образом: n!!=1*3*5*…*n, если n – нечетно, и n!!=2*4*6*…n, если n - четно).

  9. В трехмерном пространстве заданы четыре точки своими координатами. Определить пару точек наиболее близких друг к другу. (Определить функцию вычисления расстояния между двумя точками).

  10. Найти периметр треугольника, заданного координатами своих вершин. (Определить функцию для расчета длины отрезка по координатам его вершин).

  11. Найти площадь треугольника, заданного координатами своих вершин. (Определить функцию для расчета длины отрезка по координатам его вершин).

  12. Даны три треугольника, заданные длинами своих сторон. Выяснить, какой из них имеет наибольшую площадь. (Определить функцию для расчета площади треугольника по трем его сторонам).

Задание 3 – Вычисление матричных выражений с помощью функций

Написать функции для сложения, умножения и вычитания квадратных матриц. Используя составленные функции, вычислить значение матричного выражения, заданного по вариантам. Матрицы A, B, C вводятся с клавиатуры, предварительно запрашивается размер матриц.

В качестве примера см. выше код программы, складывающей две данные матрицы.

  1. A+B*C

  2. A*B+C

  3. A-B*C

  4. A*C-B

  5. B+A*C

  6. C-A*B

  7. (A+B)*C

  8. A*(B-C)

  9. A*B-C

  10. A*B+ B*C

  11. A*B*C+A

  12. A*A+B*C

  13. A+B*C+C

Задание 4 – Использование функций для обработки матриц

Написать функцию, выполняющую с матрицей действия, описанные в варианте (варианты взяты из лабораторной работы 7). Размеры матрицы и ее элементы вводятся с клавиатуры. Можно написать вспомогательные функции для чтения матрицы с клавиатуры и печати ее на экран.

Пример. Определить в целочисленной матрице номер строки, которая содержит наибольшее количество элементов, равных 0.

#include <iostream>

using namespace std;

//Задаем максимальное допустимое количество строк и столбцов

const int MAX_ROW_COUNT = 100;

const int MAX_COL_COUNT = 100;

//Определяем функцию для чтения размеров матрицы и ее элементов с клавиатуры.

//Введенные значения возвращаются из функции через параметры, передаваемые по ссылке:

// A - введенная матрицы, nRows - введенное количество ее строк,

// nCols - введенное количество ее столбцов

void InputMatrix(int A[MAX_ROW_COUNT][MAX_COL_COUNT], int& nRows, int& nCols)

{

//Вводим размеры матрицы (количество строк и столбцов)

cout << "Enter matrix sizes" << endl;

cout << " rows count : ";

cin >> nRows;

cout << " cols count : ";

cin >> nCols;

//Вводим сами элементы матрицы

cout << "Enter matrix : " << endl;

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

{

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

cin >> A[i][j];

}

}

//Определяем функцию нахождения в матрице A размера nRows х nCols строки с максимальным количеством нулей.

//Функция возвращает в качестве своего результата найденный номер строки, а в параметре

//max0Count, передаваемом по ссылке, - количество нулей в этой строке.

int RowIndexWithMaxZeroes(int A[MAX_ROW_COUNT][MAX_COL_COUNT], int nRows, int nCols, int& max0Count)

{

//Определяем локальные переменные, необходимые для вычислений

//Текущий индекс строки, содержащей максимальное количество нулей

int max0RowIndex = 0;

//Количество нулей в max0RowIndex-й строке матрицы

max0Count = 0;

//Внешний цикл перебирает все индексы строк матрицы

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

{

//Данная переменная используется для подсчета числа нулей

// в очередной i-й строке

int cur0Count = 0;

//Пробегаемся по всем элементам i-й строки, для этого

//j принимает во вложенном цикле все возможные индексы столбцов

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

//Если очередной элемент равен 0, то

if (A[i][j] == 0)

cur0Count++; //увеличиваем счетчик количества таких элементов на 1

//Если количество нулевых элементов i-й строки превышает

//текущеее максимальное количество, то

if (cur0Count > max0Count)

{

//сохраняем в качестве текущего максимального количества

//число нулей в i-й строке

max0Count = cur0Count;

//сохраняем i в качестве текущего индекса строки, содержашей

//максимальное количество нулей

max0RowIndex = i;

}

}

//Возвращаем в качестве результата вызова функции номер строки с

//максимальным количеством нулей

return max0RowIndex;

}