Professional Documents
Culture Documents
Lab Work 11
Lab Work 11
Теоретичні відомості
1. Робота з масивами
Масив — це сукупність однотипних величин. Елементи масиву мають
одне і те саме ім'я, а розрізняються за порядковим номером (індексом).
Масиви розташовуються в динамічної області пам'яті, тому створення
масиву починається з виділення пам'яті під його елементи. Елементами масиву
можуть бути величини як значимих, так і посилкових типів (у тому числі
масиви). Масив значимих типів зберігає значення, масив посилкових типів —
посилання на елементи. Всім елементам при створенні масиву призначається
значення за замовчанням: нулі для значимих типів і null для посилкових.
В C# є три види масивів:
• одновимірні масиви;
• прямокутні масиви.
• "зубчасті" (ступінчасті, jagged) масиви.
Приклад 2
using System;
namespace ConsoleApplication1
{ class Class1
{
static void Main()
{
const int m = 3, n = 4;
int[,] a = new int[m, n] {
{ 2,-2, 8, 9 },
{-4,-5, 6,-2 },
{ 7, 0, 1, 1 }
};
double sum = 0;
int nPosEl;
for ( int i = 0; i < m; ++i )
{
nPosEl = 0;
for ( int j = 0; j < n; ++j )
{
sum += a[i, j];
if ( a[i, j] > 0 ) ++nPosEl;
}
Console.WriteLine( "У рядку {0} {1} додатніх елементів",
i, nPosEl );
}
Console.WriteLine( "Середнє арифметичне всіх елементів: "
+ sum / m / n );
}
}
}
2. Клас System.Array
Всі масиви наслідуються від базового класу System.Array.
Основні члени (властивості і методи) класу System.Array
Елемент Вид Опис
Length Властивість Повертає кількість елементів масиву (по всій
розмірності)
Rank Властивість Повертає кількість вимірювань масиву
BinarySearc Статичний Двійковий пошук у відсортованому масиві
h метод
Приклад 2.1.
В цьому прикладі створюється масив цілих чисел а. В циклі foreach на
консоль виводиться кожний елемент масиву. Далі створюється ціла змінна
lArray, якій призначається кількість елементів масиву, отримана за допомогою
властивості масиву Length. Після цього створюється ціла змінна rArray, якій
призначається розмірність масиву, отримана за допомогою властивості Rank .
Обчислені значення виводяться на консоль.
Namespace ConsoleArray1
{
class Program
{
static void Main(string[] args)
{
int[] a = { 10, 20, 30, 40 };
foreach (int i in a) { System.Console.WriteLine(i); }
int lArray = a.Length;
int rArray = a.Rank;
Console.WriteLine("кількість елементів ={0},розмірність =
{1}", lArray,rArray);
Console.ReadKey();
}
}
}
Приклад 2.2.
Сортування масиву чисел. Використовується стандартний метод Sort
класу Array. Вхідні дані призначаються при створенні масиву.
static void Main(string[] args)
{
// визначення масиву і його ініціалізація
int[] Data = {9, 3, 7, 5, 6, 4, 8, 1};
// сортування значень масиву
Array.Sort(Data);
// друк відсортованих даних
Console.WriteLine("Друк відсортованих даних");
for (int i=0; i<Data.Length; i++)
Console.WriteLine("Data["+i+"] = " + Data[i]);
Console.ReadLine();
}
Приклад 3.1
public void Rand()
{
const int initRnd = 77;
Random realRnd = new Random();
Random repeatRnd = new Random(initRnd);
// випадкові числа в діапазоні [0,1)
Console.WriteLine("випадкові числа в діапазоні[0,1)");
for(int i =1; i <= 5; i++)
{
Console.WriteLine("Число " + i + "= "
+ realRnd.NextDouble() );
}
// випадкові числа в діапазоні[min,max]
int min = -100, max=-10;
Console.WriteLine("випадкові числа в діапазоні [" +
min +"," + max + "]");
for(int i =1; i <= 5; i++)
{
Console.WriteLine("Число " + i + "= "
+ realRnd.Next(min,max) );
}
// випадковий масив байтів
byte[] bar = new byte[10];
repeatRnd.NextBytes(bar);
Console.WriteLine("Масив випадкових чисел в діапазоні [0, 255]");
for(int i =0; i < 10; i++)
{
Console.WriteLine("Число " + i + "= " +bar[i]);
}
}//Rand
Контрольні запитання
1. Перелічіть способи опису масивів.
2. Чим відрізняється зберігання в пам'яті масивів з величин значимого і
посилкового типів?
3. Чи є розмірність частиною опису масиву?
4. Чи може розмірність масиву бути описана змінною (а не константою)?
5. Чи можна змінити розмірність масиву після виділення пам'яті під
нього?
6. Які види масивів використовуються в С#?
7. Що відбувається, якщо кількість ініціалізаторів масиву не відповідає
заявленій розмірності?
8. Що відбувається при призначенні масивів?
9. Опишіть два-три методи сортування масивів.
10. Опишіть основні методи і властивості класу System.Array
11. Які обмеження має оператор foreach в порівнянні з оператором for?