Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕМА 6. ОСНОВИ РОБОТИ З МАСИВАМИ.docx
Скачиваний:
7
Добавлен:
22.11.2019
Размер:
83.72 Кб
Скачать

3. Багатовимірні масиви.

Жодної принципової різниці між одновимірними та багатовимірними масивами немає. Одновимірні масиви - це окремий випадок багатовимірних. Можна говорити і по-іншому: багатовимірні масиви є природним узагальненням одновимірних. Одновимірні масиви дозволяють задавати такі математичні структури як вектори, двовимірні, - матриці, тривимірні, - куби даних, масиви більшої розмірності - багатовимірні куби даних. Відмічу, що при роботі з базами даних багатовимірні куби, так звані куби OLAP, зустрічаються часто.

У чому особливість оголошення багатовимірного масиву? Як в вказати розмірність масиву? Це робиться досить просто, за рахунок використання ком. От як виглядає оголошення багатовимірного масиву в загальному випадку:

int[,] array;

Приклад ініціалізації:

int[,]matrix = {1,2},{3,4};

Давайте розглянемо класичне завдання додавання прямокутних матриць. Нам знадобиться три динамічні масиви для представлення матриць і три методи, один з яких заповнюватиме вхідні матриці випадковими числами, інший - виконувати додавання матриць, третій - друкувати самі матриці.

Ось тестовий приклад (програма містить трішки довгий код, але варто його переглянути):

Приклад 4. Додавання матриць.

1: class AddMatrixClass

2: {

3: static void Main(string[] args)

4: {

5: //Оголосимо розмірність наших матриць

6: int rows = 3, cols = 5;

7:  

8: //Оголосимо матриці

9: int[,] a = new int[rows, cols];

10: int[,] b = new int[rows, cols];

11: int[,] result = new int[rows, cols];

12:  

13: //Заповнимо матриці випадковими числами

14: a = FillArray(rows, cols, 5);

15: b = FillArray(rows, cols, 7);

16: //Виведемо на консоль матрицю А

17: Console.WriteLine("\nArray1: ");

18: PrintArray(a);

19: //Виведемо на консоль матрицю B

20: Console.WriteLine("\nArray2: ");

21: PrintArray(b);

22:  

23: //Додамо і присвоїмо результат

24: result = AddMatrix(a, b);

25:  

26: if (result != null)

27: {

28: Console.WriteLine("\nResultMatrix: ");

29: PrintArray(result);

30: }

31: }

32:  

33: static int[,] AddMatrix(int[,] a, int[,] b)

34: {

35: //Оголосимо матрицю у яку будемо записувати результат.

36: int[,] res = new int[a.GetLength(0), a.GetLength(1)];

37:  

38: //Перевіримо чи однаковий розмір матриць

39: if ((a.GetLength(0) != b.GetLength(0)) || (a.GetLength(1) != b.GetLength(1)))

40: Console.WriteLine("Мариці неоднакового розміру.");

41: else

42: {

43: for (int i = 0; i < a.GetLength(0); ++i)

44: {

45: //Виконуємо додавання елементів матриць

46: for (int j = 0; j < a.GetLength(1); ++j)

47: res[i, j] = a[i, j] + b[i, j];

48: }

49: return res;

50: }

51: return null;

52: }

53:  

54: static int[,] FillArray(int rows, int cols, int randnum)

55: {

56: int[,] array = new int[rows, cols];

57: //Створює змінну класу рендом для генерування значень

58: Random rand = new Random(randnum);

59: for (int i = 0; i < rows; ++i)

60: {

61: for (int j = 0; j < cols; ++j)

62: {

63: array[i, j] = rand.Next(0,100);

64: }

65: }

66: return array;

67: }

68:

69: static void PrintArray(int[,] array)

70: {

71: for (int i = 0; i < array.GetLength(0); ++i)

72: {

73: for (int j = 0; j < array.GetLength(1); ++j)

74: {

75: //Виводимо значення на консоль

76: Console.Write(" {0}\t", array[i, j]);

77: }

78: Console.WriteLine();

79: }

80: }

81: }

Результат виконання (у вас він буде іншим):

Рис. 3. Результат виконання прикладу 4.