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

Приклад

Створити статичний клас Array2DHelper, що містить такі методи для двовимірних цілочисельних масивів:
Метод Вхідні параметри Повертане значення Що робить метод
CreateRandomArray - Двовимірний масив array Заповнює двовимірний масив array випадковими числами. Кількість рядків, стовпчиків і діапазон випадкових значень вводяться з клавіатури
PrintArray Двовимірний масив array - Виводить на екран двовимірний масив array
SumByRows Двовимірний масив array Одномірний масив В Кожен елемент масиву є сумою всіх елементів відповідного рядка масиву А
SumByColumns Двовимірний масив array Одномірний масив В Кожен елемент масиву є сумою всіх елементів відповідного стовпця масив А

public static class Array2DHelper
{
    public static int[,] CreateRandomArray()
    {
        Random rand = new Random();
        
        Console.WriteLine("Введіть розмірність масиву");
        Console.Write("Рядків (n) = ");
        int rows = Convert.ToInt32(Console.ReadLine());
        
        Console.Write("Стовпців (m) = ");
        int cols = Convert.ToInt32(Console.ReadLine());
        
        Console.WriteLine("Введіть діапазон значень");
        Console.Write("Мінімум (X) = ");
        int min = Convert.ToInt32(Console.ReadLine());
        
        Console.Write("Максимум (Y) = ");
        int max = Convert.ToInt32(Console.ReadLine());
        
        int[,] array = new int[rows, cols];
        
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                array[i, j] = rand.Next(min, max + 1);
            }
        }
        
        return array;
    }

    public static void PrintArray(int[,] array)
    {
        for (int i = 0; i < array.GetLength(0); i++)
        {
            for (int j = 0; j < array.GetLength(1); j++)
            {
                Console.Write($"{array[i, j],5}");
            }
            Console.WriteLine();
        }
    }
}
public static class ArrayConverter
{
    /// 
    /// Сумує елементи по рядках (горизонтальна сума)
    /// 
    public static int[] SumByRows(int[,] matrix)
    {
        int rows = matrix.GetLength(0);
        int[] result = new int[rows];
        
        for (int i = 0; i < rows; i++)
        {
            int sum = 0;
            for (int j = 0; j < matrix.GetLength(1); j++)
            {
                sum += matrix[i, j];
            }
            result[i] = sum;
        }
        
        return result;
    }

    /// 
    /// Сумує елементи по стовпцях (вертикальна сума)
    /// 
    public static int[] SumByColumns(int[,] matrix)
    {
        int cols = matrix.GetLength(1);
        int[] result = new int[cols];
        
        for (int j = 0; j < cols; j++)
        {
            int sum = 0;
            for (int i = 0; i < matrix.GetLength(0); i++)
            {
                sum += matrix[i, j];
            }
            result[j] = sum;
        }
        
        return result;
    }
}

Створити статичний клас Array1DUtils, що містить такі методи для одновимірних цілих масивів:

Метод Вхідні параметри Повертане значення Що робить метод
PrintArray Одномірний масив array - Виводить одновимірний масив у консоль
CountSingleDigitNumbers Одномірний масив array Ціло число Підраховує кількість одноцифрових чисел у масиві
HalveEvenNumbers Одномірний масив array - Зменшує парні числа у масиві вдвічі
public static class Array1DUtils
{
    /// 
    /// Виводить одновимірний масив у консоль
    /// 
    public static void PrintArray(int[] array)
    {
        Console.WriteLine(string.Join(" ", array));
    }

    /// 
    /// Підраховує кількість одноцифрових чисел у масиві
    /// 
    public static int CountSingleDigitNumbers(int[] array)
    {
        int count = 0;
        foreach (int num in array)
        {
            if (num >= -9 && num <= 9)  // Враховуємо від'ємні одноцифрові числа
                count++;
        }
        return count;
    }

    /// 
    /// Зменшує парні числа у масиві вдвічі
    /// 
    public static void HalveEvenNumbers(int[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            if (array[i] % 2 == 0)
                array[i] /= 2;
        }
    }
}

У класі Program:

static void Main(string[] args)
{
    // 1. Створення та виведення двовимірного масиву
    int[,] matrix2D = Array2DHelper.CreateRandomArray();
    Console.WriteLine("Початковий двовимірний масив:");
    Array2DHelper.PrintArray(matrix2D);

    // 2. Обробка за рядками
    int[] rowSums = Array2DHelper.SumByRows(matrix2D);
    Console.WriteLine("\nОдновимірний масив (суми по рядкам):");
    Array1DUtils.PrintArray(rowSums);
    
    int singleDigitCount = Array1DUtils.CountSingleDigitNumbers(rowSums);
    Console.WriteLine($"Кількість одноцифрових чисел: {singleDigitCount}");

    // 3. Обробка за стовпцями
    int[] colSums = Array2DHelper.SumByColumns(matrix2D);
    Console.WriteLine("\nОдновимірний масив (суми по стовпцям):");
    Array1DUtils.PrintArray(colSums);
    
    Array1DUtils.HalveEvenNumbers(colSums);
    Console.WriteLine("Масив після зміни парних чисел (поділ на 2):");
    Array1DUtils.PrintArray(colSums);

    Console.ReadKey();
}

Результат:


  Початковий двовимірний масив:
   10   15   20
   25   30   35
   40   45   50

Одновимірний масив (суми по рядкам):
45 90 135
Кількість одноцифрових чисел: 0

Одновимірний масив (суми по стовпцям):
75 90 105
Масив після зміни парних чисел (поділ на 2):
37 45 52

Завдання

Створити статичний клас DimTwo, що містить статичні методи для двовимірних масивів: Input, Print, Metod1, Metod2.

Створити статичний клас DimOne, що містить статичні методи для одновимірних масивів: Print, Metod3, Metod4

У класі, що тестує:

  1. За допомогою методу Input із класу DimTwo заповнити двовимірний масив А випадковими числами;
  2. За допомогою методу Print із класу DimTwo вивести двовимірний масив А на екран;
  3. За допомогою методу Metod1 із класу DimTwo отримати одновимірний масив В1
  4. За допомогою методу Print із класу DimOne вивести отриманий одновимірний масив В1 на екран;
  5. Застосувати метод Metod3 із класу DimOne до отриманого одновимірного масиву В1 та вивести результат на екран;
  6. За допомогою методу Metod2 із класу DimTwo отримати одномірний масив В2
  7. За допомогою методу Print із класу DimOne вивести отриманий одновимірний масив В2 на екран;
  8. За допомогою методу Metod4 із класу DimOne виконати зміни в одновимірному масиві В2;
  9. За допомогою методу Print із класу DimOne вивести змінений одновимірний масив В2 на екран

Варіанти завдань

Варіант Metod1 Metod2 Metod3 Metod4
1 Кожен елемент масиву B є сумою парних елементів відповідного рядка масиву А Кожен елемент масиву B є кількістю додатних елементів відповідного стовпця масиву А Знаходить у масиві B індекс першого числа, яке закінчується цифрою 2. Якщо таких чисел немає, повертає -1. У масиві B збільшити значення всіх чисел на 1
2 Кожен елемент масиву B є кількістю від'ємних елементів відповідного рядка масиву А Кожен елемент масиву B є сумою непарних елементів відповідного стовпця масиву А Знаходить у масиві В індекс першого числа, що дорівнює 0. Якщо таких чисел немає, повертає -1. У масиві В поміняти знак усіх чисел на протилежний
3 Кожен елемент масиву B є добутком непарних елементів відповідного рядка масиву А Кожен елемент масиву B є кількістю двозначних елементів відповідного стовпця масиву А Знаходить у масиві В індекс першого числа, яке закінчується цифрою 1. Якщо таких чисел немає, повертає -1. У масиві B всі 0 замінити на 1
4 Кожен елемент масиву B є кількістю двозначних елементів відповідного рядка масиву А Кожен елемент масиву B є добутком додатних елементів відповідного стовпця масиву А Знаходить у масиві В індекс першого числа, що дорівнює 0. Якщо 0 немає, повертає -1. У масиві B всі непарні числа помножити на 2
5 Кожен елемент масиву В дорівнює true, якщо у відповідному рядку масиву А всі числа однозначні і дорівнює false в іншому випадку Кожен елемент масиву B є мінімальним числом (першим) відповідного стовпця масиву А Знаходить у масиві B Кількість значень true У масиві B всі однозначні числа помножити на 10
6 Кожен елемент масиву В дорівнює true, якщо у відповідному рядку масиву А є однозначні числа і дорівнює false у противному випадку Кожен елемент масиву B є максимальним числом (першим) відповідного стовпця масиву А Знаходить у масиві B Кількість значень false У масиві B всі числа кратні 3 розділити на 3
7 Кожен елемент масиву B дорівнює true, якщо у відповідному рядку масиву А всі числа додатні і дорівнює false в іншому випадку Кожен елемент масиву B є сумою однозначних чисел відповідного стовпця масиву А Знаходить у масиві B Кількість значень true У масиві В усі від'ємні числа замінити на протилежні за знаком
8 Кожен елемент масиву В дорівнює true, якщо у відповідному рядку масиву А є двозначні числа і дорівнює false в іншому випадку Кожен елемент масиву B є сумою від'ємних чисел відповідного стовпця масиву А Знаходить у масиві B Кількість значень false У масиві B всі числа кратні 5 розділити на 5
9 Масив В є останнім рядком масиву А, в якому парних чисел більше, ніж непарних Кожен елемент масиву B є кількістю однозначних чисел відповідного стовпця масиву А Знаходить у масиві В індекс першого максимального числа. У масиві B всі непарні числа помножити на 2
10 Масив В є першим рядком масиву А, в якому додатних чисел більше, ніж від'ємних Кожен елемент масиву B є сумою від'ємних чисел відповідного стовпця масиву А Знаходить у масиві В індекс першого двозначного числа. Якщо двозначних чисел немає, повертає -1. У масиві B всі парні числа поділити на 2
11 Масив В є останнім рядком масиву А, в якому найменша кількість однозначних чисел Масив В є першим стовпчиком, в якому парних чисел більше, ніж непарних Знаходить у масиві В індекс першого простого числа. Якщо простих чисел немає, то повертає -1. У масиві B всі числа паліндроми замінити 0
12 Масив В є останнім рядком масиву А, в якому найбільша кількість парних чисел Масив В є першим стовпчиком, в якому однозначних чисел більше, ніж не однозначних. Знаходить у масиві В індекс першого числа паліндрому. Якщо паліндромів немає, повертає -1. У масиві B всі прості числа замінити 0

Варіант 13

Визначимо клас Cats, який моделює ситуацію, коли безліч альбомів із фотографіями котиків ділять між собою пам'ять телефону. Для різних котиків різні альбоми.

Клас містить:

  1. Поле із загальним обсягом пам'яті AllMemory. Це поле не може відноситися до конкретного альбому, воно має бути спільним для всіх альбомів. Тому опишемо його зі специфікатором static.
  2. Поле кількість альбомів з котиками CatsCount (у першому альбомі один котик, у другому – другий тощо). Аналогічно теж опишемо його зі специфікатором static.
  3. Поле розмір альбому size. Це характеристика конкретного альбому, тож це поле не статичне.
  4. Властивість Size для читання значень поля size.
  5. Конструктор, у якому будемо збільшити лічильник CatsCount під час створення кожного нового об'єкта. Тут ми задаємо розмір альбому. Мінімальна кількість фотографій в одному альбомі – п'ять.
  6. Не статичний метод MakePhoto, який показує, що людина зробила фотографію і додала до вже існуючого альбому. У цьому він займає місця у пам'яті m = 2*CatsCount. Вага альбому збільшується на m, а обсяг вільної пам'яті зменшується на m.
  7. Статичний метод Info, який показує, скільки всього альбомів і скільки пам'яті залишилося

У класі Program:

  1. Завести котика та зробити альбом із його фото.
  2. Вивести обсяг пам'яті, яку він займає і загальну кількість вільної пам'яті
  3. За допомогою методу MakePhoto додати фотографію котика до альбому.
  4. Вивести обсяг пам'яті, яку він займає і загальну кількість вільної пам'яті після розміщення фото
  5. Те саме зробити ще для одного котика

Варіант 14

Між Землею та Марсом налагоджений транспортний маршрут, яким кожне протистояння необхідно доставити 100000 тонн вантажу.

Відомо, що один корабель виходить із ладу, доставивши 3500 тонн вантажу.

Потрібно створити клас, що моделює поведінку кількох кораблів у такому режимі роботи, причому спочатку є два кораблі, а при виході обох з ладу збирається додатково на один корабель більше (тобто після доставки 7000 тонн створюється вже 3 корабля, і т.д. .д.), крім випадку, коли так багато кораблів не потрібно (наприклад, якщо після завершення циклу роботи п'яти кораблів залишається 4000 тонн вантажу для доставки, то створюється не 6 кораблів, а 2, оскільки їх буде достатньо виконання завдання).

Наприкінці вивести кількість збудованих кораблів.


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