Функции. Лр6. Лабораторная работа 6 Методы ( функции) Требования
Скачать 88.6 Kb.
|
Лабораторная работа №6 «Методы (функции)» Требования: Выполнять задания строго в соответствии со своим вариантом в списке журнала. Выполнять все поставленные задачи в задании. В случае, если данные обозначены буквами или не даны в явном виде, то они вводятся с клавиатуры. Обязательно выводить в консоли начальные значения задачи, если они заданы. Обязательно выводить в консоли результат работы программы с соответствующим обозначением того, что этот результат означает. Если пользователь должен что-то ввести с консоли, обязательно вывести на консоль сообщение, что это конкретно должно быть. Каждая задача должна содержать не менее трех методов. Метод инициализации и вывода данных должны быть обязательно. Избегать повторяющегося кода. Не передавать без необходимости в метод более четырех переменных. Разбивать задание на максимальное количество методов (логически). Вариант 25 Выполнить задачу №5 согласно вашему варианту из ЛР4 с использованием функций, разбивая задачу на максимальное число подфункций. Дано целое число Nи набор из Nпрямоугольников, заданных своими сторонами — парами чисел (a, b). Найти минимальную площадь прямоугольника из данного набора. Описать функцию Quarter(x, y) целого типа, определяющую номер координатной четверти, в которой находится точка с ненулевыми вещественными координатами (x, y). С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами. Описать функцию Norm1(A,M,N) вещественного типа, вычисляющую норму матрицы A размера M x N с вещественными элементами: [Norm1(A,M,N) = max {|A[1,j]| + |A[2,j]| + ... + |A[M,j]|}], где максимум берется по всем [j от 1 до N]. Для данной матрицы A размера M x N найти Norm1(A,k,N), k = 1,...,M. Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Определите, какое количество элементов этой последовательности, равны ее наибольшему элементу. В этой задаче не использовать глобальные переменные. Функция получает данные, считывая их с клавиатуры, а не получая их в виде параметра. Результат записывается в переменные, которые передаются в функцию по ссылке. Других параметров, кроме как используемых для возврата значения, функция не получает. Гарантируется, что последовательность содержит хотя бы одно число (кроме нуля). Выполнить задачу №5 согласно вашему варианту из ЛР4 с использованием функций, разбивая задачу на максимальное число подфункций. static void SubFunction(int[] NewArr, ref int[] Array, int index) { for (int i = 0; i < index; i++) { NewArr[i] = Array[i]; } } static void SubFunction1(int[] NewArr, ref int[] Array, int index) { for (int i = index + 1; i < Array.Length; i++) { NewArr[i - 1] = Array[i]; } Array = NewArr; } static void FuncDelete(int[] NewArr, ref int[] array, int index) { SubFunction(NewArr, ref array, index); SubFunction1(NewArr, ref array, index); } static void EvenNumbers(int[] Arr) { int[] NewArr = new int[Arr.Length - 1]; for (int i = 0; i <= Arr.Length - 1; i++) { if (Arr[i] % 2 == 0) { FuncDelete(NewArr, ref Arr, i); } } Console.WriteLine(Output(Arr)); } case 1: { int[] Array = Input(); Console.Write(Output(Array)); EvenNumbers(Array); break; } Рисунок 1 Дано целое число Nи набор из Nпрямоугольников, заданных своими сторонами — парами чисел (a, b). Найти минимальную площадь прямоугольника из данного набора. static (int,int) Squares(int n) { int min = 0, max = 0; for (int i = 0; i <= n; i++) { Console.WriteLine("A: "); int A = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("B: "); int B = Convert.ToInt32(Console.ReadLine()); int s = A * B; if (i == 1) { min = s; max = s; } if (s < min) { min = s; } if (s > max) { max = s; } } return (min,max); //Console.WriteLine("Минимальная площадь треугольника из набора=" + min); //Console.WriteLine("Максимальная площадь треугольника из набора=" + max); } Рисунок 2 Описать функцию Quarter(x, y) целого типа, определяющую номер координатной четверти, в которой находится точка с ненулевыми вещественными координатами (x, y). С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами. static int Quarter(int x, int y) { if (x > 0 && y > 0) { return 1; } else if (x < 0 && y > 0) { return 2; } else if (x < 0 && y < 0) { return 3; } else if (x > 0 && y < 0) { return 4; } return 0; } Рисунок 3 Описать функцию Norm1(A,M,N) вещественного типа, вычисляющую норму матрицы A размера M x N с вещественными элементами: [Norm1(A,M,N) = max {|A[1,j]| + |A[2,j]| + ... + |A[M,j]|}], где максимум берется по всем [j от 1 до N]. Для данной матрицы A размера M x N найти Norm1(A,k,N), k = 1,...,M. static int Max(int a, int[]b ) { int max = b[0]; for (int i = 0; i < a; i++) { if (b[i] > max) { max = b[i]; } } return max; } static (int, int[]) Norm1(int[,]Arr) { int pos = 0; int[] vektor = new int[Arr.GetLength(1)]; for (int i = 0; i < Arr.GetLength(1); i++) { for (int j = 0; j < Arr.GetLength(0); j++) { vektor[pos] += Math.Abs(Arr[j,i]); } pos++; } return (pos, vektor); } Рисунок 4 Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Определите, какое количество элементов этой последовательности, равны ее наибольшему элементу. В этой задаче не использовать глобальные переменные. Функция получает данные, считывая их с клавиатуры, а не получая их в виде параметра. Результат записывается в переменные, которые передаются в функцию по ссылке. Других параметров, кроме как используемых для возврата значения, функция не получает. Гарантируется, что последовательность содержит хотя бы одно число (кроме нуля). static void GetCount(int max, int count) { int n = int.Parse(Console.ReadLine()); if (n == 0) { Console.WriteLine($"{max}, {count}"); } if (n > max) { GetCount(n, 1); } else if (n == max) { GetCount(max, count++); } else { GetCount(max, count); } } Рисунок 5 |