Масиви рядків. Приклади розв’язку найбільш поширених задач
Зміст
- 1. Масив рядків. Тип string[]. Створення масиву рядків
- 2. Приклад ініціалізації масиву рядків
- 3. Приклад введення рядків з клавіатури та утворення масиву рядків
- 4. Приклад сортування масиву рядків методом вставки
- 5. Приклад пошуку заданого рядка в масиві рядків
- 6. Приклад підрахунку кількості входжень заданого рядка в масиві рядків
- Зв’язані теми
Пошук на інших ресурсах:
1. Масив рядків. Тип string[]. Створення масиву рядків
У мові C# можуть в масиви можуть бути об’єднані рядки. Кожен рядок представлений типом string.
Для створення масиву рядків потрібно виконати наступні кроки.
1. Оголосити посилання на тип string, наприклад
string[] arrString;
де arrString – назва посилання;
2. Виділити пам’ять для масиву
arrString = new string[size];
тут size – кількість рядків (екземплярів) типу string.
⇑
2. Приклад ініціалізації масиву рядків
Масив рядків може бути ініціалізований при його оголошенні. Нижче наводиться приклад ініціалізації та виведення на екран масиву daysOfWeek, який визначає дні тижня.
using System; namespace ConsoleApp8 { class Program { static void Main(string[] args) { // Ініціалізація масиву рядків string[] daysOfWeek = { "Sunday", "Monday", "Tuersday", "Wednesday", "Thirsday", "Friday", "Saturday" }; // Виведення масиву рядків AS в циклі for (int i = 0; i < daysOfWeek.Length; i++) Console.WriteLine("AS[{0}] = {1}", i, daysOfWeek[i]); Console.ReadKey(); } } }
Результат виконання програми
AS[0] = Sunday AS[1] = Monday AS[2] = Tuersday AS[3] = Wednesday AS[4] = Thirsday AS[5] = Friday AS[6] = Saturday
⇑
3. Приклад введення рядків з клавіатури та утворення масиву рядків
У прикладі вводяться рядки з клавіатури до тих пір, поки не буде введено пустий рядок “”. Одночасно формується масив рядків, який після завершення вводу виводиться на екран.
using System; namespace ConsoleApp8 { class Program { static void Main(string[] args) { // Введення рядків з клавіатури // та утворення нового масиву // 1. Оголосити дані string[] AS; // посилання на масив рядків int count; // поточна кількість рядків у масиві string s; string[] AS2; // додаткова змінна-посилання - зберігає старий масив рядків // 2. Цикл вводу рядків Console.WriteLine("Enter strings:"); count = 0; // обнулити кількість рядків AS = new string[count]; // виділити пам'ять для 0 рядків do { // Ввести рядок s = Console.ReadLine(); // Перевірка, чи не пустий рядок if (s != "") { // якщо рядок не пустий, то додати його до масиву count++; // попередньо виділити пам'ять для нового масиву // в якому на 1 елемент більше AS2 = new string[count]; // скопіювати старий масив в новий for (int i = 0; i < AS2.Length - 1; i++) AS2[i] = AS[i]; // додати останній введений рядок в масив AS2 AS2[count - 1] = s; // Звільняти пам'ять, попередньо виділену під AS не потрібно, // цим займається збирач сміття // перенаправити посилання AS на AS2 AS = AS2; } } while (s != ""); // Виведення масиву рядків AS в циклі for (int i = 0; i < AS.Length; i++) Console.WriteLine("AS[{0}] = {1}", i, AS[i]); Console.ReadKey(); } } }
Як видно з вищенаведеного коду, не потрібно робити звільнення попередньо виділеної пам’яті для масиву AS як у мовах C/C++. Цим займається збирач сміття.
Результат роботи програми
Enter strings: abc bcdef ghi jkl mno AS[0] = abc AS[1] = bcdef AS[2] = ghi AS[3] = jkl mno
⇑
4. Приклад сортування масиву рядків методом вставки
У прикладі демонструється ввід масив з n рядків (n>0) та його сортування методом вставки. Рядки сортуються за зростанням.
using System; namespace ConsoleApp8 { class Program { static void Main(string[] args) { // Сортування масиву рядків методом вставки. // 1. Оголошення змінних string[] AS; // масив рядків int count; // к-сть елементів у масиві string s; // додаткова змінна-рядок // 2. Ввести к-сть рядків Console.Write("count = "); count = Int32.Parse(Console.ReadLine()); // 3. Виділити пам'ять для масиву з count рядків AS = new string[count]; // 4. Ввести дані масиву з клавіатури Console.WriteLine("Enter array:"); for (int i=0; i<AS.Length; i++) { Console.Write("AS[{0}] = ", i); AS[i] = Console.ReadLine(); } // 5. Сортування методом вставки for (int i = 0; i < AS.Length - 1; i++) for (int j = i; j >= 0; j--) if (String.Compare(AS[j], AS[j + 1]) > 0) // функція Compare() { // поміняти значення місцями s = AS[j]; AS[j] = AS[j + 1]; AS[j + 1] = s; } // 6. Вивести масив AS Console.WriteLine("Sorted array:"); for (int i = 0; i < AS.Length; i++) Console.WriteLine("AS[{0}] = {1}", i, AS[i]); Console.ReadKey(); } } }
Як видно з вищенаведеного прикладу, для порівняння двох масивів використовується функція Compare(). Ця функція повертає число більше 0, якщо перший рядок знаходиться в лексикографічному порядку після другого рядка. Якщо рядки рівні, функція повертає нульове значення.
Результат роботи програми
count = 5 Enter array: AS[0] = lkd AS[1] = kbd AS[2] = abcd AS[3] = jklm nop AS[4] = ffed Sorted array: AS[0] = abcd AS[1] = ffed AS[2] = jklm nop AS[3] = kbd AS[4] = lkd
⇑
5. Приклад пошуку заданого рядка в масиві рядків
У прикладі вводиться масив рядків та вводиться деякий рядок. Якщо рядок наявний в масиві, то визначається його позиція. Результат пошуку виводиться на екран.
using System; namespace ConsoleApp8 { class Program { static void Main(string[] args) { // Пошук заданого рядка в масиві рядків // 1. Оголошення змінних string[] AS; // масив рядків int count; // к-сть елементів у масиві string str; // рядок, який шукається // 2. Ввести к-сть рядків Console.Write("count = "); count = Int32.Parse(Console.ReadLine()); // 3. Перевірка, чи значення count є коректне if (count<=0) { Console.WriteLine("Error. The value of count is incorrect."); Console.ReadKey(); return; } // 4. Виділити пам'ять для масиву з count рядків AS = new string[count]; // 5. Ввести дані масиву з клавіатури Console.WriteLine("Enter array:"); for (int i=0; i<AS.Length; i++) { Console.Write("AS[{0}] = ", i); AS[i] = Console.ReadLine(); } // 6. Ввести рядок символів Console.Write("Enter string: "); str = Console.ReadLine(); // 7. Пошук рядка в масиві рядків bool f_is = false; // прапорець, що сигналізує наявність рядка в масиві int index = -1; // позиція рядка в масиві for (int i = 0; i < AS.Length - 1; i++) if (str == AS[i]) { f_is = true; index = i; } // 8. Виведення результату if (f_is) { Console.WriteLine("String \"{0}\" is in the array.", str); Console.WriteLine("Position is {0}", index); } else { Console.WriteLine("String \"{0}\" is not in the array.", str); } Console.ReadKey(); } } }
Результат роботи програми
count = 7 Enter array: AS[0] = sd AS[1] = lkjl AS[2] = wewe AS[3] = ooii AS[4] = slkdlk AS[5] = cxx AS[6] = lkl Enter string: wewe String "wewe" is in the array. Position is 2
⇑
6. Приклад підрахунку кількості входжень заданого рядка в масиві рядків
У прикладі вводиться рядок та масив рядків. Потім здійснюється підрахунок кількості входжень заданого рядка в масиві рядків.
using System; namespace ConsoleApp8 { class Program { static void Main(string[] args) { // Обчислення кількості входжень заданого рядка в масиві рядків // 1. Оголошення змінних string[] AS; // масив рядків int count; // к-сть елементів у масиві string str; // рядок, кількість входжень якого обчислюється int n_occurs; // кількість входжень - результат // 2. Ввід рядка str Console.WriteLine("Enter string:"); str = Console.ReadLine(); // 3. Ввід кількості елементів в масиві Console.Write("count = "); count = Convert.ToInt32(Console.ReadLine()); // 4. Перевірка, чи коректне значення count if (count<=0) { Console.WriteLine("Error. The value of count is incorrect."); Console.ReadLine(); return; } // 5. Виділення пам'яті для масиву рядків AS = new string[count]; // 6. Ввід масиву з клавіатури Console.WriteLine("Enter the array AS:"); for (int i=0; i<AS.Length; i++) { Console.Write("AS[{0}] = ", i); AS[i] = Console.ReadLine(); } // 7. Підрахунок кількості входжень n_occurs = 0; for (int i = 0; i < AS.Length; i++) if (str == AS[i]) n_occurs++; // 8. Виведення результату Console.WriteLine("n_occurs = {0}", n_occurs); Console.ReadKey(); } } }
Результат роботи програми
Enter string: abc count = 9 Enter the array AS: AS[0] = dd AS[1] = abc AS[2] = ghi AS[3] = jklm AS[4] = abc AS[5] = def AS[6] = bca AS[7] = abc AS[8] = fklsdj n_occurs = 3
⇑
Зв’язані теми
- Одновимірні масиви. Приклади розв’язку задач з одновимірними масивами. Масиви структур. Масиви класів. Ініціалізація масиву
- Багатовимірні масиви. Ступінчаті масиви. Ініціалізація багатовимірних масивів
- Посилання на масиви. Властивість Length. Присвоювання масивів
- Неявно типізовані масиви. Ключове слово var
⇑