Клас Array описує одновимірні масиви.
Методи класу Array, які ми розглянемо, є статичними. Тобто вони застосовуються до класу в цілому, а не до об'єкта.
Приклад нестатичного методу: метод Next з класу Random. Метод Next застосовується до об'єкта per класу Random.
Random per=new Random();
int x=per.Next(-10,10);
Приклад статичного методу: метод Sqrt з класу Math. Метод Sqrt застосовується до класу Math.
|
Оскільки клас Array описує одновимірні масиви, то для застосування цих методів до кожного рядка чи стовпця двовимірного масиву потрібно:
Статичні методи IndexOf, LastIndexOf - визначають індекси першого та останнього входження зразка в масив, повертаючи -1, якщо входження не виявлено.
Параметри методів: сам масив і шукане значення.
Повертає значення індексу шуканого значення.
//у масиві а знаходимо індекс першої 2
// та присвоюємо його змінній first
int first = Array.IndexOf(a, 2);
//у масиві а знаходимо індекс останньої 2
// та присвоюємо його змінній last
int last = Array.LastIndexOf(a, 2);
Статичний метод Reverse - переставляє елементи всього або частини масиву у зворотному порядку.
Для перестановки всіх елементів використовується цей метод з одним параметром: сам масив.
Цей параметр є і повертаємим значенням, тобто результат нічому не присвоюється.
|
Для перестановки частини масиву цей метод використовується з трьома параметрами:
Перший параметр є і повертаємим значенням, тобто результат нічому не присвоюється.
|
Переставити у зворотному порядку елементи кожного рядка двовимірного масиву. Програма:
static void Main(string[] args)
{
// Ініціалізація генератора випадкових чисел
Random random = new Random();
// Розміри матриці
int rows = 3, cols = 4;
int[,] matrix = new int[rows, cols];
int[] tempRow = new int[cols];
// Заповнення матриці випадковими числами (-10 до 10) та виведення
Console.WriteLine("Початкова матриця:");
for(int i = 0; i < rows; i++)
{
Console.WriteLine();
for (int j = 0; j < cols; j++)
{
matrix[i, j] = random.Next(-10, 10);
Console.Write("{0,3} ", matrix[i, j]);
}
}
Console.WriteLine("\n---");
// Обробка кожної рядка матриці
for (int i = 0; i < rows; i++)
{
// Копіювання рядка у тимчасовий масив
for (int j = 0; j < cols; j++)
tempRow[j] = matrix[i, j];
// Реверсування рядка
Array.Reverse(tempRow);
// Повернення зміненого рядка у матрицю
for (int j = 0; j < cols; j++)
matrix[i, j] = tempRow[j];
}
// Виведення зміненої матриці
Console.WriteLine("\nМатриця після реверсування рядків:");
for (int i = 0; i < rows; i++)
{
Console.WriteLine();
for (int j = 0; j < cols; j++)
Console.Write("{0,3} ", matrix[i, j]);
}
Console.ReadKey();
}
У двовимірному масиві 3 рядки та 4 стовпці.
Допоміжний одновимірний масив повинен складатися з 4 елементів.
Початкова матриця:
5 -2 9 4
-3 7 0 1
8 -5 2 -6
---
Матриця після реверсування рядків:
4 9 -2 5
1 0 7 -3
-6 2 -5 8
Статичний метод Sort - сортує за зростанням елементи всього або частини масиву.
Для сортування всіх елементів цей метод використовується з одним параметром: сам масив.
Цей параметр є і повертаємим значенням, тобто результат нічому не присвоюється.
//у масиві а числа 3 1 6 2
// застосовуємо до цього масиву метод Sort
Array.Sort(a);
//у масиві а будуть числа 1 2 3 6
Для сортування частини масиву цей метод використовується з трьома параметрами:
Перший параметр є і повертаємим значенням, тобто результат нічому не присвоюється.
//у масиві а числа 3 1 6 2 7 4
// відсортуємо 3 елементи, починаючи з другого
Array.Sort(a,2,3);
//у масиві а будуть числа 3 1 2 6 7 4
Для сортування масиву за спаданням потрібно:
У кожному стовпці двовимірного масиву відсортувати за спаданням 4 елементи, починаючи з 2-го
У двовимірному масиві 7 рядків та 4 стовпці.
Допоміжний одновимірний масив повинен складатися з 7 елементів. Програма:
static void Main(string[] args)
{
// Ініціалізація генератора випадкових чисел
Random random = new Random();
// Розміри матриці
int rows = 7, cols = 4;
int[,] matrix = new int[rows, cols];
int[] tempColumn = new int[rows];
// Заповнення матриці випадковими числами (-10 до 10) та виведення
Console.WriteLine("Початкова матриця:");
for(int i = 0; i < rows; i++)
{
Console.WriteLine();
for (int j = 0; j < cols; j++)
{
matrix[i, j] = random.Next(-10, 10);
Console.Write("{0,3} ", matrix[i, j]);
}
}
Console.WriteLine("\n----------");
// Обробка кожного стовпця матриці
for (int j = 0; j < cols; j++)
{
// Копіювання стовпця у тимчасовий масив
for (int i = 0; i < rows; i++)
tempColumn[i] = matrix[i, j];
// Сортування елементів (з 3-го по 6-й) за зростанням
Array.Sort(tempColumn, 2, 4);
// Реверсування відсортованої частини
Array.Reverse(tempColumn, 2, 4);
// Повернення зміненого стовпця у матрицю
for (int i = 0; i < rows; i++)
matrix[i, j] = tempColumn[i];
}
// Виведення зміненої матриці
Console.WriteLine("\nМатриця після обробки стовпців:");
for (int i = 0; i < rows; i++)
{
Console.WriteLine();
for (int j = 0; j < cols; j++)
Console.Write("{0,3} ", matrix[i, j]);
}
Console.ReadKey();
}
Початкова матриця:
5 -2 9 4
-3 7 0 1
8 -5 2 -6
10 -8 3 7
-7 4 -1 2
0 9 -4 5
6 -3 8 -9
----------
Матриця після обробки стовпців:
5 -2 9 4
-3 7 0 1
10 -5 8 -6
8 -8 3 7
-7 4 -1 2
0 9 -4 5
6 -3 2 -9