Айнымалыларды массивке біріктіру түрлі алгоритмдерде және деректерді өңдеу жүйелерінде қолданылады, мысалы, реляциялық деректер базасында немесе тізімдермен берілген массивтерде сұрыптау мен іздеу алгоритмдерінде. Сондықтан көптеген визуалды бағдарламалау орталарында массивтермен жұмыс істеуге арналған арнайы кластар бар
C# тілінде массивтермен жұмыс жасау үшін System.Array класы қолданылады. Осы класта массивтермен жұмыс істеуге арналған статикалық қасиеттер мен әдістер бар. Ең жиі қолданылатын қасиеттердің бірі - массивте элементтер санын есептейтін Length типіндегі қасиет. Мысалы, masi массивінің элементтер саны masi.Length арқылы анықталады. Бүтін типтегі Rank қасиет – массив өлшемін анықтауға мүмкіндік береді. System.Array класының ең жиі қолданылатын әдістері 9.1-кестеде көрсетілген.
9.1-кестесі – System.Array класының әдістері
Әдіс
|
Сипаттама
|
Static int BinarySearch (Array, object, IComparer);
|
Екілік іздеу әдісі. Сұрыпталған бір өлшемді Array массивінде IComparer интерфейсі арқылы object элементін іздейді және элемент индексін қайтарады, егер элемент табылмаса теріс санды қайтарады.
|
public static void CopyTo (Array, Index);
|
Ағымдағы бір өлшемді массивтен барлық элементтерді Array массивіне Index индексінен бастап көшіреміз.
|
public static Array CreateInstance(Type ElementsType, int[] Lengths, int[] LowerBounds);
|
Әрбір өлшемі бойынша элементтер саны Lengths және Индекстердің төменгі шегі LowerBounds болатын, ElementsType типіндегі элементтерден тұратын көп өлшемді массивті құрайды.
Қайта жүктелетін әдістер индекстері 0-ден басталады бір өлшемді және екі өлшемді массивтерді құруға мүмкіндік береді.
|
public int GetLowerBound (Dimension);
|
Dimension өлшемі бойынша индекстің ең кіші мәнін қайтарады.
|
public int GetUpperBound (Dimension);
|
Dimension өлшемінде индекстің ең үлен мәнін қайтарады.
|
public static void Reverse (Array);
|
Бір өлшемді Array массивінің элементтер тәртібін кері орналастырады.
|
public static void Sort (Array);
|
Бір өлшемді Array массивін сұрыптайды
|
public static void Clear (Array, Index, Length);
|
Массивті тазарту. Бір өлшемді Array массивінде Length элементтерін орналастырамыз. Элементтер типіне қарай Index элементінен бастап мәндері 0, false немесе null болады.
|
public int GetLenght (Dimension);
|
Dimension өлшемі бойынша массив элементтерінің санын қайтарады.
|
Есепті шығару үшін System.Array класын қолданып, бағдарламаны жазу процесін қарастырайық. Сонымен қатар класс әдістерінің массиві құру процестері және осы массив пен әдеттегі жолмен құрылған массив элементтерін өңдеу үшін класс әдістерін қолдану қарастырылады.
9.3-есеп. Минус 40 пен 40 аралығындағы кездейсоқ бүтін сандардан тұратын A массивін құру. Массивті шығару. Массивтің барлық элементтерін сұрыптау. Құрылған массив элементтерін өлшемі жағынан бірдей басқа массивке көшіру. Онда диалог режимінде берілген кілт бойынша элементтің бинарлық іздестірілуін орындау. Бағдарламаны жазғанда System.Array класының әдістерін қолдану.
Бағдарлама коды:
using System;
namespace ConsoleApplication1
{
class Program
{
public static int[] ctl = { 15 };
public static int[] niz = { 1 };
public static Array masi = Array.CreateInstance(typeof(int), ctl, niz);
public static void sozd()
{
Random rnd = new Random();
Console.WriteLine("Massiv kurildi!!: ");
for (int i = masi.GetLowerBound(0); i <= masi.Length; i++)
masi.SetValue((rnd.Next(81) - 40), i);
for (int i = masi.GetLowerBound(0); i <= masi.Length; i++)
Console.Write(masi.GetValue(i) + " ");
Console.WriteLine();
}
static void Main()
{
int[] a = new int[15];
int k = 0;
string buf;
sozd();
Console.WriteLine("Massivti sorttaimiz jane shigaramiz: ");
Array.Sort(masi);
foreach (int i in masi)
Console.Write(i + " ");
Console.WriteLine();
Console.WriteLine("Massivti bytin sandardan tyratin massivke koshiremiz: ");
Array.Copy(masi, a, masi.Length);
foreach (int i in a)
Console.Write(i + " ");
Console.WriteLine();
//массивті реверстейміз
Array.Reverse(a);
Console.WriteLine("Shana massivti reverstey jane shigary: ");
foreach (int i in a)
Console.Write(i + " ");
Console.WriteLine();
//санды кілт бойынша бинарлы іздеу
Console.WriteLine("Kilt boinsha massivte sandi binarli izdey");
Console.WriteLine("Izdey kiltin engiziniz");
buf = Console.ReadLine();
k = Convert.ToInt32(buf);
int idx = Array.BinarySearch(masi, k);
Console.WriteLine("Sannin indeksi = " + idx);
Console.WriteLine("jok kiltti engiziniz");
buf = Console.ReadLine();
k = Convert.ToInt32(buf);
idx = Array.BinarySearch(masi, k);
Console.WriteLine("Sannin indeksi = " + idx);
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
Massiv kurildi!!:
-15 -31 -2 -31 20 13 -30 12 19 25 -24 -32 -22 3 19
Massivti sorttaimiz jane shigaramiz:
-32 -31 -31 -30 -24 -22 -15 -2 3 12 13 19 19 20 25
Massivti bytin sandardan tyratin massivke koshiremiz:
-32 -31 -31 -30 -24 -22 -15 -2 3 12 13 19 19 20 25
Shana massivti reverstey jane shigary:
25 20 19 19 13 12 3 -2 -15 -22 -24 -30 -31 -31 -32
Kilt boinsha massivte sandi binarli izdey
Izdey kiltin engiziniz
12
Sannin indeksi = 10
jok kiltti engiziniz
18
Sannin indeksi = -13
Array.CreateInstance(typeof( int),ctl,niz); әдісі арқылы 15 элементтен тұратын бір өлшемді masi массивін құраймыз (Lengths қасиеті ctl айнымалысына тең), бірінші LowerBounds индексі 1-ге тең (индекс мәні 1-ден үлкен бола алады, бірақ 0-ге тең емес).
For циклінде masi.GetLowerBound(0) қолданылады. Айнымалының бастапқы мәні 1-ге, ал соңғы мәні – masi.Length 15-ке тең.
for (int i = masi.GetLowerBound(0); i <= masi.Length; i++)
masi.SetValue((rnd.Next(81) - 40), i);
Массив элементтерін қолдану System.Array класының әдістері арқылы ғана мүмкін: жазуда - masi.SetValue және оқуды орындағанда - masi.GetValue.
Массивті сұрыптауды Array.Sort(masi); статикалық әдісімен орындаймыз және оны foreach циклі арқылы монитор экранына шығарамыз:
foreach (int i in masi)
Console.Write(i + " ");
Console.WriteLine();
System.Array класының әдістері арқылы құрылған массивті a массивіне көшіреміз:
Array.Copy(masi, a, masi.Length);
Ары қарай a массиві үшін System.Array класының реверс әдісі мен бинарлық іздестіруді қолдану қарастырылған.
9.4-есебі. 0 мен 20 аралығындағы кездейсоқ бүтін сандардан тұратын 5х5 матрицасын құрып, оны шығару керек. Матрицаны 25 элементтен тұратын массивке қайта жазып, осы массивтің барлық элементтерін сұрыптау керек. Массивті матрицаға кері жазуды орындаңыз, сұрыпталған матрицаны шығарыңыз.
Бағдарлама коды:
using System;
namespace ConsoleApplication1
{
class Program
{
public static Array masi = Array.CreateInstance(typeof(int), 5, 5);
public static void sozd()
{
int kk;
Random rnd = new Random();
Console.WriteLine("Matriza kyrildi: ");
for (int i = 0; i <= 4; i++)
for (int j = 0; j <= 4; j++)
{
kk = rnd.Next(21);
masi.SetValue(kk, i, j);
}
for (int i = 0; i <= 4; i++)
{
for (int j = 0; j <= 4; j++)
Console.Write(masi.GetValue(i, j) + "\t");
Console.WriteLine();
}
}
static void Main()
{
int[] a = new int[25];
int k = 0;
string buf;
sozd();
Console.WriteLine("Matrizani massivke koshiry, ekranga shigary: ");
int j = 0;
foreach (int i in masi)
{
Console.Write(i + " "); a[j] = i; j++;
}
Console.WriteLine();
Console.WriteLine("Massivti syriptay, ekranga shigary: ");
Array.Sort(a);
foreach (int i in a)
Console.Write(i + " ");
Console.WriteLine();
Console.WriteLine("Massivti matrizaga koshiry: ");
k = 0;
for (int i = 0; i <= 4; i++)
{
for (j = 0; j <= 4; j++)
{
masi.SetValue(a[k], i, j); k++;
Console.Write(masi.GetValue(i, j) + "\t");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
Matriza kyrildi:
2 9 3 17 8
4 14 12 17 11
9 18 8 7 5
16 7 15 6 12
4 2 15 6 16
Matrizani massivke koshiry, ekranga shigary:
2 9 3 17 8 4 14 12 17 11 9 18 8 7 5 16 7 15 6 12 4 2 15 6 16
Massivti syriptay, ekranga shigary:
2 2 3 4 4 5 6 6 7 7 8 8 9 9 11 12 12 14 15 15 16 16 17 17 18
Massivti matrizaga koshiry:
2 2 3 4 4
5 6 6 7 7
8 8 9 9 11
12 12 14 15 15
16 16 17 17 18
Екі өлшемді массив элементтерін құру және өңдеу үшін бағдарламада System.Array класының әдістері қолданылған. System.Array класының кейбір әдістерін тек бір өлшемді массивтер элементтеріне ғана қолдануға болады, мысалы, элементтерді сұрыптау. Сондықтан бағдарламада кең таралған жолы қарастырылады:, өңдеуді таңдау әдісімен орындау, екі өлшемді массив элементтерін бір өлшемді массивке қайтадан жазу және керісінше бір өлшемді массив элементтерін екі өлшемді массивке жазу.
Достарыңызбен бөлісу: |