C#. Масиви

Опрацювати теоретичний матеріал 

Навчальні презентації он-лайн (Перейти на статтю)

Загальні відомості про масиви
 

Масив має такі властивості:

  • Масив може бути одновимірним, багатовимірним або масивом масивів.
  • Кількість вимірювань і довжина кожного з вимірів задаються, коли створюється екземпляр масиву. Ці значення не можна змінити під час існування елементу.
  • Використовувані за умовчанням значення числових елементів масиву дорівнюють нулю, і елементам присвоєно значення NULL.
  • У масиві масивів елементи є посилальними типами і не започатковано значенням null.
  • Масиви індексуються від нуля: масив з n елементами індексується від 0 до n-1.
  • Елементи масиву можуть мати будь-який тип, в тому числі тип масиву.
  • Типи масивів - це посилальні типи, похідні від абстрактного базового типу Array.  Можна переглядати в циклі foreach будь-який масив C #.

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

Можна оголосити одновимірний масив, що містить п'ять цілих чисел, як показано в наступному прикладі:  int[] array = new int[5];

Цей масив містить елементи з array [0] по array [4]. За допомогою оператора new можна створити масив і форматувати його елементи, використовуючи значення за замовчуванням. У цьому прикладі при ініціалізації всіх елементів масиву привласнюються нульові значення.

Таким же чином можна оголосити масив, в якому зберігаються рядкові елементи. Приклад: string[] stringArray = new string[6];

Масив можна форматувати при оголошенні. В цьому випадку не потрібно специфікатор рангу, оскільки він вже задається по числу елементів в списку ініціалізації. Приклад: int[] array1 = new int[] { 1, 3, 5, 7, 9 };

Масив рядків можна форматувати таким же чином. Наведу оголошення масиву рядків, де кожен елемент масиву ініціалізується з використанням назви дня: string[] Days = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

Змінну масиву можна оголосити без ініціалізації, однак при присвоєнні масиву цієї змінної необхідно використовувати оператор new. Приклад: int[] array3; array3 = new int[] { 1, 3, 5, 7, 9 };

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

Масиви можуть мати кілька вимірів. Наприклад, наступне оголошення створює двомірний масив з чотирьох рядків і двох стовпців. int[,] array = new int[4, 2];

Наступне оголошення створює масив з трьох вимірів: 4, 2 і 3. int[, ,] array1 = new int[4, 2, 3];

Масив можна форматувати при оголошенні: 

int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; 

int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

string[,] array2Db = new string[3, 2] { { "one", "two" }, { "three", "four" }, { "five", "six" } };

int[, ,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } };

int[, ,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } };

Також можна форматувати масив без вказівки рангу.

int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

Щоб оголосити змінну масиву без ініціалізації, використовуйте оператор new для присвоєння масиву змінної. Використання оператора new показано в наступному прикладі.

int[,] array5;

array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

У наступному прикладі присвоюється значення конкретного елементу масиву.

array5[2, 1] = 25;

Опорні задачі

1. Приклад генерування елементів масиву А із 8 цілих чисел

            int[] a = new int[8];
            Random rand = new Random();
            Console.WriteLine("Дано масив A: ");
            for (int i = 0; i < 8; i++)
            {
                a[i] = rand.Next(2, 25);
                Console.Write("{0} ", a[i]);
            }

2. Приклад знаходження елементів за даними властивостями: виведення на екран тих елементів масиву, які більші 5.

             int[] a = new int[10];
            Random rand = new Random();
            Console.WriteLine("Дано масив A: ");
            for (int i = 0; i < 10; i++)
            {
                a[i] = rand.Next(2, 25);
                Console.Write("{0} ", a[i]);
            }
            Console.WriteLine();
            Console.WriteLine("Елементи масиву, якi бiльшi 5:");
            for (int i = 0; i < 10; i++)
                 if (a[i]>5)
                      Console.Write("{0} ", a[i]);

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

int[] a = new int[5];
            Console.WriteLine("Ввести елементи масиву : ");
            for (int i = 0; i < 5; i++)
            {
               a[i]=int.Parse(Console.ReadLine());
            }
            Console.WriteLine();
            Console.WriteLine("Ви сформували масив:");
            for (int i = 0; i < 5; i++)
                  Console.Write("{0} ", a[i]);

4. Приклад оголошення масиву, виведення його на екран та обчислення суми усіх елементів масиву

            int[] a = new int[] { 1, 3, 5, 7, 9 };
            int s = 0;
            Console.WriteLine("Дано масив:");
            for (int i = 0; i < 5; i++)
            {
                Console.Write("{0} ", a[i]);
                s += a[i];
            }
            Console.WriteLine();
            Console.WriteLine("s={0}", s); 

5. Приклад оголошення масиву 15 дійсних чисел та знаходження кількості елементів, які менші 0.

            double[] a = new double[] { -1, 0.5, 3, 1.8, 5, -2.4, 7, 24, 3.1, 0.9, 9, 10, 5.5, 4,-1.9};
            int k = 0;
            Console.WriteLine("Дано масив:");
            for (int i = 0; i < 15; i++)
            {
                Console.Write("{0:f1} ", a[i]);
                if (a[i]<0)
                       k ++; 
            }
            Console.WriteLine();
            Console.WriteLine("k={0}", k);

або

            double[] a = new double[] { -1, 0.5, 3, 1.8, 5, -2.4, 7, 24, 3.1, 0.9, 9, 10, 5.5, 4,-1.9};
            int k = 0;
             for (int i = 0; i < 15; i++)
                if (a[i]<0)
                       k ++; 
            Console.WriteLine("k={0}", k); 

6. Обнулення елементів масиву, індекси яких є парними числами (не забувайте, що число 0 не є ні парним, ні непарним)

            int[] a = new int[] { -1, 3, 5, 7, 24, 9, 10, 4, -1};
            Console.WriteLine("Даний масив");
            for (int i = 0; i < 9; i++)
                  Console.Write("{0} ", a[i]);
            Console.WriteLine();
            Console.WriteLine("Змiнений масив");
            for (int i = 0; i < 9; i++)
            {
                if (i % 2 == 0 && i!=0)
                    a[i] = 0;
                Console.Write("{0} ", a[i]);             
            }

7. Заміна елементів другої половини масиву числом 100.

          int[] a = new int[] { 12, 33, 54, 17, 20, 19, 15, 42};
            Console.WriteLine("Даний масив");
            for (int i = 0; i < 8; i++)
                  Console.Write("{0} ", a[i]);
            Console.WriteLine();
            Console.WriteLine("Змiнений масив");
            for (int i = 0; i < 8; i++)
            {
                if (i>3)
                    a[i] = 100;
                Console.Write("{0} ", a[i]);             
            }

8. В даному масиві a[10] цілих чисел замінити від'ємні елементи їх модулями.

            int[] a = new int[] { -1, 12, -33, 54, -7, -20, 24, 15, 40, -55};
            Console.WriteLine("Даний масив");
            for (int i = 0; i < 10; i++)
                  Console.Write("{0} ", a[i]);
            Console.WriteLine();
            Console.WriteLine("Змiнений масив");
            for (int i = 0; i < 10; i++)
            {
                if (a[i]<0)
                    a[i] = Math.Abs(a[i]);
                Console.Write("{0} ", a[i]);             
            }

9. В масиві з трьох слів вивести перші букви цих слів

            string[] a = new string[] { "Ket", "Nik","Mari"};
            Console.WriteLine("В даному масивi iмена починаються з букв:");
            for (int i = 0; i < 3; i++)
                 Console.Write("{0} ", a[i].Substring(0,1));   

Лабораторна робота "Обробіток масивів"

Перейти до завдань обробітку масивів

Перейти до завдань обробітку масивів

Задача (12 балів). У казковій країні Лукомор'я в цілях економії палива всі вантажі перевозять на Змій Гориничах, які мають свій бортовий номер від 1 до 15. Кількість голів Змія визначає його вантажопідйомність. В архіві К. Безсмертного заведено особову справу на кожного Змія Горинича з інформацією окремо про кількість голів і про бортові номера. Одного разу на Калиновому мосту вантажним Змієм Гориничем була збита громадянка Баба Яга. Порушник зник, але свідки показали, що число голів Змія кратне його бортовому номеру. Допоможіть Д. Микитовича слідчому по ДТП з'ясувати порушника.
 
private void button1_Click(object sender, EventArgs e)
{
int[] a = new int[15];
int[] b= new int[15];
Random rand = new Random();

for (int i = 0; i < 15; i++)
{
a[i] = rand .Next(2, 25);
b[i] = rand .Next(2, 6);
listBox1.Items.Add( i.ToString() + " " + a[i].ToString());
listBox2.Items.Add(i.ToString() + " " + b[i].ToString());
}
for (int i = 0; i < 15; i++)
{
if (a[i]%b[i] ==0)
{
listBox3.Items.Add("№"+i.ToString() + " голів - " + b[i].ToString() + ", бортовий номер: " + a[i].ToString());
}}}
Задача (10 балів). Масив містить відомості про кількість опадів, що випали за кожен з 12 місяців одного року. Скласти програму, що визначає загальну кількість опадів за цей рік, середньомісячна кількість опадів, кількість посушливих місяців (коли кількість опадів було менше 30 мм), самий посушливий місяць року.
private void button1_Click(object sender, EventArgs e)
{
int[] a = new int[12];
int s = 0;
int m=-1;
int sk;
Random rand = new Random();
for (int i = 0; i < 12; i++)
{
a[i] = rand.Next(1, 300);
listBox1.Items.Add( i.ToString() + " " + a[i].ToString());
s = s + a[i];
}
textBox1.Text = s.ToString();
sk = s / 12;
textBox2.Text = sk.ToString();
int k = 0;
int min = 301;
for (int i = 0; i < 12; i++)
{
if (a[i] < 30) k++;
}
textBox3.Text = k.ToString();
for (int i = 0; i < 12; i++)
{
if (a[i] < min)
{
min = a[i];
m = i;
}
}
textBox4.Text = m.ToString();
}
Задача (8 балів). Напишіть програму аналізу значень температури хворого за добу: визначте мінімальне і максимальне значення, середнє арифметичне. Заміри температури виробляються шість разів на добу і результати вводяться з клавіатури в масив T.
private void button1_Click(object sender, EventArgs e)
{
double[] t = new double[6];
double s = 0;
double sk;
Random rand = new Random();
for (int i = 0; i < 6; i++)
{
t[i] = rand.Next(36, 39);
listBox1.Items.Add( (i+1).ToString() + " вимірювання - " + t[i].ToString());
s = s + t[i];
}
sk = s / 6;
double min = 40;
double max = 35;
for (int i = 0; i < 6; i++)
{
if (t[i] < min) min = t[i];
if (t[i] > max) max = t[i];
}
textBox2.Text = min.ToString();
textBox3.Text = max.ToString();
textBox4.Text = sk.ToString();
}
Задача. 
Дано масив А[1..5] та масив В[1..7]. Створити масив С, у який спочатку ввійдуть елементи масиву А , а потім елементи масиву В.
Перейти на сторінку з програмним кодом
 
Задача. Дано масиви А[1..5 та В[1..7]. Створити масив С, у який ввiйдуть спочатку додатнi елементи масиву А, а потiм вiдємнi елементи масиву В.
Перейти на сторінку з програмним кодом
 

Задана дійсна матриця A розміру m×n. Створити лінійний масив В, k-тий елемент якого b[k] це: абсолютні величини елементів k-го рядка даної  матриці A:
            int[,] a = new int[3, 4]  {{1,5,8,3},{-1,2,9,0},{-1,-2,4,6} };
            int  i,j;
            Console.WriteLine("Дано масив A: ");
            for  (i = 0; i < 3; i++)
            {
                for  (j = 0; j < 4; j++) Console.Write("{0}  ",a[i, j]);     

           Console.WriteLine();

           }

            Console.WriteLine("введи номер рядка k ");
            int  k = int.Parse(Console.ReadLine());

           //сума абсолютних величин елементів k-го рядка даної матриці           

           // заносимо в новий лінійний масив  В

            // масив В має стільки ж елементів, скільки їх в рядку масиву А, тобто 4
            int[] B = new int[4];

            for  (i = 0; i < 4; i++) B[i] = Math.Abs(a[k-1, i]);

            // виводимо створений масив В
            Console.WriteLine("Створений масив B: ");
            for (i = 0; i < 4; i++) Console.Write("{0}  ", B[i]);
            Console.WriteLine();

 

Перейти до завдань обробітку лінійних масивів

Перейти до завдань обробітку двовимірних масивів