Назад Вперед Зміст

ДЕЯКІ МЕТОДИ КЛАСУ Array

Клас Array описує одновимірні масиви.

Методи класу Array, які ми розглянемо, є статичними. Тобто вони застосовуються до класу в цілому, а не до об'єкта.

Відмінність статичних та нестатичних методів

Приклад нестатичного методу: метод Next з класу Random. Метод Next застосовується до об'єкта per класу Random.


Random per=new Random();
int x=per.Next(-10,10);

Приклад статичного методу: метод Sqrt з класу Math. Метод Sqrt застосовується до класу Math.


double x=Math.Sqrt(2)+1;

Оскільки клас Array описує одновимірні масиви, то для застосування цих методів до кожного рядка чи стовпця двовимірного масиву потрібно:

Методи IndexOf, LastIndexOf

Статичні методи IndexOf, LastIndexOf - визначають індекси першого та останнього входження зразка в масив, повертаючи -1, якщо входження не виявлено.

Параметри методів: сам масив і шукане значення.

Повертає значення індексу шуканого значення.

Приклад


//у масиві а знаходимо індекс першої 2
// та присвоюємо його змінній first
int first = Array.IndexOf(a, 2);
//у масиві а знаходимо індекс останньої 2
// та присвоюємо його змінній last
int last = Array.LastIndexOf(a, 2);

Метод Reverse

Статичний метод Reverse - переставляє елементи всього або частини масиву у зворотному порядку.

Для перестановки всіх елементів використовується цей метод з одним параметром: сам масив.

Цей параметр є і повертаємим значенням, тобто результат нічому не присвоюється.

Приклад


//у масиві а числа 4 5 6 7
// застосовуємо до цього масиву метод Reverse
Array.Reverse(a);
//у масиві а будуть числа 7 6 5 4

Для перестановки частини масиву цей метод використовується з трьома параметрами:

  1. сам масив,
  2. індекс початку частини, що переставляється,
  3. кількість елементів, що переставляються.

Перший параметр є і повертаємим значенням, тобто результат нічому не присвоюється.

Приклад


//у масиві а числа 5 9 4 2 3 7
// застосовуємо до цього масиву метод Reverse
// переставимо, починаючи з 2-го, три елементи
Array.Reverse(a,2,3);
//у масиві а будуть числа 5 9 3 2 4 7

Приклад

Переставити у зворотному порядку елементи кожного рядка двовимірного масиву. Програма:

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

Статичний метод Sort - сортує за зростанням елементи всього або частини масиву.

Для сортування всіх елементів цей метод використовується з одним параметром: сам масив.

Цей параметр є і повертаємим значенням, тобто результат нічому не присвоюється.

Приклад


//у масиві а числа 3 1 6 2
// застосовуємо до цього масиву метод Sort 
Array.Sort(a);
//у масиві а будуть числа 1 2 3 6

Для сортування частини масиву цей метод використовується з трьома параметрами:

  1. сам масив,
  2. індекс початку частини, що сортується,
  3. кількість елементів, що сортируються.

Перший параметр є і повертаємим значенням, тобто результат нічому не присвоюється.

Приклад


//у масиві а числа 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

Назад Вперед Зміст