You are on page 1of 9

Міністерство освіти і науки України

Національний технічний університет


«Дніпровська політехніка»

ЗВІТ
Про виконання лабораторної роботи з дисципліни
«Алгоритми та структури даних»
Лабораторна робота №7
22 варіант
«Функції, що повертають
результат»

Роботу виконав:
студент гр. 121-21-1
Мельніков Дмитро Владиславович

НТУ «ДП» – 2021


Умова (Завдання 1)

Код

1. #include <iostream>
2. #include <cmath>
3. using namespace std;
4.
5. float Recursion(float x)//Функция-рекурсия
6. {
7. const double eps = 0.0001;
8. float sum, d;
9. int n ;
10. cout << "Пожалуйста, введите число n:" << endl;
11. cin >> n;
12. sum=0, d=0;
13. while (n >= 0)//Вместо эпсилона 0, потому что при n>=eps идёт неправильное чередование знаков,
что приводит к неправильному вычислению функции
14. {
15. //Чередование знака "+" и "-" при чётном и нечётным n(степени)
16. if (n % 2 == 0)//число чётное
17. {
18. d = x / (pow(2, n));
19. sum += d;
20. }
21. if (n % 2 == 1)//число нечётное
22. {
23. d = x / (pow(2, n));
24. sum -= d;
25. }
26. d = 0;//Обнуление слагаемого (или вычитаемого) числа
27. n--;
28. }
29. return sum;
30. }
31. float Sum(float x)//Функция-сумма
32. {
33. int i = 1, n, fact=1;
34. float sum = 0;
35. cout << "Пожалуйста, введите число n:" << endl;
36. cin >> n;
37. for (; i < n; i++)
38. {
39. fact = fact * i;//Факториал числа і
40. sum += (fact + cos(x) / ( (x * fact) + (tan(i)*x) ) );
41. }
42. return sum;
43. }
44.
45. float Division(float x)//Функция-деление(дробь)
46. {
47. float div = 0;
48. div = (atan(x) / (abs(x)) + (1 / sqrt(x)));//arctg(x)/(|x|+ (1/√x))
49. return div;
50. }
51.
52. int main()//Основное тело кода, где выполняются функции
53. {
54. char ch;
55. do
56. {
57. setlocale(LC_ALL, "ru");
58. float x;
59. double y = 0;
60. cout << "Введите х: " << endl;
61. cin >> x;
62. if (x >= 1.0 && x < 2.0)
63. {
64. y = Recursion(x);//Вызов функции-рекурсии
65. }
66. else
67. if (x >= 2.0 && x < 5.5)
68. {
69. y = Sum(x);//Вызов функции-суммы
70. }
71. else
72. if (x >= 5.5)
73. {
74. y = Division(x);//Вызов функции-деления
75. }
76. cout << "y=" << y << endl;
77. cout << "Выйти из программы? y/n: ";
78. cin >> ch;
79. } while (ch!='y');
80. system("pause");
81. return 0;
82. }
Результати

Умова(Завдання 2)
22. Дано матриці А(3,5), B(5,2), С(4,4). Для кожної з них обчислити суми рядків
та різницю між добутком та сумою елементів. Результати передати через
параметри функції й роздрукувати. Уведення, виведення матриці, обчислення
сум рядків та обчислення різниці між добутком та сумою елементів оформити у
вигляді функцій.
Код

1. #include <iostream>
2. using namespace std;
3.
4. //Функция для заполнения массива
5. void FillArray(int**arr, char name, int rows, int cols)
6. {
7. cout << "Введите массив " << name << " " << endl;
8. for (int i = 0; i <= rows; i++)
9. {
10. for (int j = 0; j <= cols; j++)
11. {
12. cout << " " << name << "[" << i << "]" << "[" << j << "]=";
13. cin >> arr[i][j];//Ввод значений пользователем
14. }
15. }
16. }
17.
18. //Функция для вывода массива на экран
19. void PrintArray(int* arr[], char name, int rows, int cols)
20. {
21. for (int i = 0; i <= rows; i++)
22. {
23. for (int j = 0; j <= cols; j++)
24. {
25. cout << " " << name << "[" << i << "]" << "[" << j << "]=" << arr[i][j];
26. }
27. cout << endl;
28. }
29. }
30. //Сумма и произведение чисел в строках
31. void SumMultiOfArray(int cols, int rows, int** array)
32. {
33. for (int i = 0; i <= rows; i++)
34. {
35. int multiply = 1;
36. int sum = 0;
37. for (int j = 0; j <= cols; j++)
38. {
39. sum += array[i][j];//sum=sum+Элемент массива
40. multiply *= array[i][j];
41. }
42. cout << "Сумма элементов рядка " << i << " = "<<sum<<"\t";
43. cout << "Произведение элементов рядка " << i << " = " << multiply << endl << endl;
44. cout << "Разница между произведением и суммой элементов рядка " << i << " = " <<
multiply-sum << endl << endl;
45. }
46. }
47. int main()
48. {
49. int A[3][5];
50. int Y[5][2];
51. int C[4][6];
52. setlocale(LC_ALL, "ru");
53. int** arrayA = new int* [3];
54. for (int i = 0; i <=3; i++)
55. {
56. arrayA[i] = new int[5];
57. }
58. FillArray(arrayA,'A', 3, 5);
59. cout << endl;
60. PrintArray(arrayA, 'A', 3, 5);
61. cout << endl;
62. SumMultiOfArray(5, 3, arrayA);
63.
64. int** arrayY = new int* [5];
65. for (int i = 0; i <= 5; i++)
66. {
67. arrayY[i] = new int[2];
68. }
69.
70. FillArray(arrayY, 'Y', 5, 2);
71. PrintArray(arrayY, 'Y', 5, 2);
72. SumMultiOfArray(2, 5, arrayY);
73.
74. int** arrayC = new int* [4];
75. for (int i = 0; i <= 4; i++)
76. {
77. arrayC[i] = new int[6];
78. }
79.
80. FillArray(arrayC, 'C', 4, 6);
81. PrintArray(arrayC, 'C', 4, 6);
82. SumMultiOfArray(5, 3, arrayC);
83. system("pause");
84. return 0;
85. }
86.

Результати
Висновки

Під час лабораторної роботи було досліджено функції з параметрами мови


програмування С++, призначення, форму запису та особливості застосування
функцій з параметрами, засвоєно методику складання та налагодження програм
із використанням функцій з параметрами на ПЕОМ..

You might also like