Файл: Лабораторная работа 6 Методы ( функции) Требования.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.03.2024

Просмотров: 7

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа №6

«Методы (функции)»
Требования:

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

  2. Выполнять все поставленные задачи в задании.

  3. В случае, если данные обозначены буквами или не даны в явном виде, то они вводятся с клавиатуры.

  4. Обязательно выводить в консоли начальные значения задачи, если они заданы.

  5. Обязательно выводить в консоли результат работы программы с соответствующим обозначением того, что этот результат означает.

  6. Если пользователь должен что-то ввести с консоли, обязательно вывести на консоль сообщение, что это конкретно должно быть.

  7. Каждая задача должна содержать не менее трех методов. 

  8. Метод инициализации и вывода данных должны быть обязательно.

  9. Избегать повторяющегося кода.

  10. Не передавать без необходимости в метод более четырех переменных.

  11. Разбивать задание на максимальное количество методов (логически).

Вариант 25



  1. Выполнить задачу №5 согласно вашему варианту из ЛР4 с использованием функций, разбивая задачу на максимальное число подфункций.

  2. Дано целое число Nи набор из Nпрямоугольников, заданных своими сторонами — парами чисел (a, b). Найти минимальную площадь прямоугольника из данного набора.

  3. Описать функцию Quarter(x, y) целого типа, определяющую номер координатной четверти, в которой находится точка с ненулевыми вещественными координатами (x, y). С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами.

  4. Описать функцию 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.

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


  1. Выполнить задачу №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

  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


  1. Описать функцию 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

  1. Описать функцию 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

  1. Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 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