Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_3_C#.doc
Скачиваний:
2
Добавлен:
18.04.2019
Размер:
436.74 Кб
Скачать

1.2. Одномірні масиви

Одномірні масиви використовуються в програмах найчастіше. Варіанти опису масиву:

тип[] ім'я:

тип[] ім'я = new тип [ розмірність ];

тип[] ім'я = { список ініціалізаторів };

тип[] ім'я = new тип [] { список ініціалізаторів };

тип[] ім'я = new тип [ розмірність ] { список ініціалізаторів };

При описі масивів квадратні дужки є елементом синтаксису, а не вказівкою на необов'язковість конструкції.

Приклади описів (один приклад для кожного варіанта опису):

int [ ] а // 1 елементів немає

int [ ] b = new int [4]; // 2 елементи рівні 0

int [ ] с = { 61, 2, 5, -9 } ; // 3 new мається на увазі

int [ ] d = new int [ ] { 61, 2, 5, -9 } ; // 4 розмірність обчислюється

int [ ] e = new int [4] { 61, 2, 5, -9 } ; // 5 надлишковий опис

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

У кожному з інших масивів по чотирих елементи цілого типу. Як видно з операторів 3-5, масив при описі можна ініціалізувати. Якщо при цьому не задана розмірність (оператор 4), кількість елементів обчислюється по кількості ініціалізованих значень. Для полів об'єктів і локальних змінних можна опускати операцію new, вона буде виконана за замовчуванням (оператор 3). Якщо є присутнім і розмірність, і список инициализаторов, розмірність повинна бути константою (оператор 5) .

Якщо кількість ініціалізованих значень не збігається з розмірністю, виникає помилка компіляції.

Як приклад розглянемо програму, що визначає суму й кількість відємних елементів, а також максимальний елемент масиву, що складає з 6 цілочисельних елементів (приклад 1).

Приклад 1. Робота з одномірним масивом

using System;

namespace ConsoleApplication1

{

class Classl

{

static void Main()

{

const int n = 6; // буде помилка, оскільки n = 4

int[] a = new int[n] { 3, 12, 5, -9 };

Console.WriteLine("Вихідний масив:");

for (int i = 0; i < n; ++i)

Console.Write("\t" + a[i]);

Console.WriteLine();

long sum = 0; // сума відємних елементів

int num = 0; // кількість відємних елементів

for (int i = 0; i < n; ++i)

if (a[i] < 0)

{

sum += a[i];

++num;

}

Console.WriteLine("Сума відємних = " + sum);

Console.WriteLine("Кількість відємних = " + num);

int max = a[0]; // максимальний елемент

for (int i = 1; i < n; ++i)

if (a[i] > max) max = a[i];

Console.WriteLine("Максимальний елемент = " + max);

Console.ReadLine();

}

}

}

1.3. Прямокутні масиви

Прямокутний масив має більше одного виміру. Найчастіше в програмах використаються двовимірні масиви. Варіанти опису двовимірного масиву:

тип [ , ] ім'я;

тип [ , ] ім'я = new тип [ розм_1, розм_2 ];

тип [ , ] ім'я = { список ініціалізаторів };

тип [ , ] ім'я = new тип [ , ] { список ініціалізаторів };

тип [ , ] ім'я = new тип [ розм_1, розм_2 ] { список ініціалізаторів };

Приклади описів (один приклад для кожного варіанта опису):

int [ , ] a ; // 1 елементів немає

int [ , ] b = new int [2,3] ; // 2 елементи рівні 0

int [ , ] с = { {1,2,3} , {4, 5,6} } ; // 3 new мається на увазі

int [ , ] d = new int [ , ] {{1,2,3} , {4,5,6}} ; // 4 розмірність обчислюється

int [ , ] е = new int [2,3] {{1,2,3} , {4,5,6}} ; // 5 надлишковий опис

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

а [1 , 4], b[i , j], b[j , i]

Необхідно пам'ятати, що компілятор сприймає як номер рядка перший індекс, як би він не був позначений у програмі.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]