Массивы строк в C

В языке C# строки можно объединять в массив. Каждая строка представляется типом string.

Создание массива строк. Тип string[].

Для создания массива строк необходимо выполнить следующие:

  • Объявить ссылку на тип string, к примеру:
    string[] arrString; где arrString – название ссылки;
  • Выделить память для массива
    arrString = newstring[size];
    здесь size – количество строк (экземпляров) типа string.

Пример инициализации массива строк

Массив строк можно инициализировать при его объявлении. Дальше приводится пример инициализации и вывод массива daysOfWeek на экран, определяющего дни недели.

using System;

namespace ConsoleApp8
{
classProgram
{
static void Main(string[] args)
{
// Инициализация массива строк
string[] daysOfWeek = { «Sunday», «Monday», «Tuersday»,
«Wednesday», «Thirsday», «Friday», «Saturday» };

// Вывод массива строк AS в цикле
for (inti = 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

Пример ввода строк с клавиатуры и создания массива строк

В приведенном ниже примере вводятся строки с клавиатуры до тех пор, пока не будет введена пустая строка «». Вместе с тем формируется массив строк, выводящийся на экран после окончания ввода.

using System;

namespace ConsoleApp8
{
classProgram
{
static void Main(string[] args)
{
// Ввод строк с клавиатуры
// и образование нового массива

// 1. Объявление переменных
string[] AS; // ссылка на массив строк
intcount; // текущее количество строк в массиве
string s;
string[] AS2; // дополнительная переменная-ссылка — сохраняет старый массив строк

// 2. Цикл ввода строк
Console.WriteLine(«Enter strings:»);

count = 0; // обнулить количество строк
AS = newstring[count]; // выделить память для 0 строк

do
{
// Ввести строку
s = Console.ReadLine();

// Проверка, пустая ли строка
if (s!=»»)
{
// если строка не пустая, то добавить строку в массив
count++;

// предварительно выделить память для нового массива
// в котором на 1 элемент больше
AS2 = newstring[count];

// скопировать старый массив в новый
for (inti = 0; i< AS2.Length — 1; i++)
AS2[i] = AS[i];

// добавить последнюю введенную строку в массив AS2
AS2[count — 1] = s;

// Освобождать память, предварительно выделенную под AS не нужно,
// этим занимается сборщик мусора

// перенаправить ссылку AS на AS2
AS = AS2;
}
} while (s != «»);

// 3. Вывод массива строк AS в цикле
for (inti = 0; i<AS.Length; i++)
Console.WriteLine(«AS[{0}] = {1}», i, AS[i]);
Console.ReadKey();
}
}
}

Из вышеприведенного кода видно, что не нужно делать освобождение предварительно выделенной памяти для массива AS как в языках C/C++. За это отвечает сборщик мусора.

Результат работы программы

Enterstrings:
abc
bcdef
ghi
jklmno

AS[0] = abc
AS[1] = bcdef
AS[2] = ghi
AS[3] = jklmno

Пример сортировки массива строк методом вставки

В примере показан ввод массива из n строк (n>0) и его сортировка методом вставки (сортировка по возрастанию).

using System;

namespace ConsoleApp8
{
classProgram
{
static void Main(string[] args)
{
// Сортировка массива строк методом вставки
// 1. Объявление переменных
string[] AS; // массив строк
intcount; // количество элементов в массиве
string s; // дополнительная переменная-строка

// 2. Ввести количество строк
Console.Write(«count = «);
count = Int32.Parse(Console.ReadLine());

// 3. Выделить память для массива из count строк
AS = newstring[count];

// 4. Ввести данные массива с клавиатуры
Console.WriteLine(«Enterarray:»);

for (inti=0; i<AS.Length; i++)
{
Console.Write(«AS[{0}] = «, i);
AS[i] = Console.ReadLine();
}

// 5. Сортировка методом вставки
for (inti = 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 (inti = 0; i<AS.Length; i++)
Console.WriteLine(«AS[{0}] = {1}», i, AS[i]);

Console.ReadKey();
}
}
}

Из примера видно, что для сравнения двух массивов применяется функция Compare(). Если первая строка находится в лексикографическом порядке после второй строки, функция возвращает число больше 0. Если строки равны, функция Compare()возвращает нулевое значение.

Результат работы программы

count = 5
Enter array:
AS[0] = lkd
AS[1] = kbd
AS[2] = abcd
AS[3] = jklmnop
AS[4] = ffed

Sorted array:
AS[0] = abcd
AS[1] = ffed
AS[2] = jklmnop
AS[3] = kbd
AS[4] = lkd

Пример поиска заданной строки в массиве строк

В примере ниже вводится массив строк и вводится некоторая строка. Если она есть в массиве, то определяется ее позиция. На экран выводится результат поиска.

usingSystem;

namespaceConsoleApp8
{
classProgram
{
static void Main(string[] args)
{
// Поиск заданной строки в массиве строк
// 1. Объявление переменных
string[] AS; // массив строк
intcount; // количество элементов в массиве
stringstr; // искомая строка

// 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 = newstring[count];

// 5. Ввести данные массива с клавиатуры
Console.WriteLine(«Enter array:»);

for (inti=0; i<AS.Length; i++)
{
Console.Write(«AS[{0}] = «, i);
AS[i] = Console.ReadLine();
}

// 6. Ввести строку символов
Console.Write(«Enter string: «);
str = Console.ReadLine();

// 7. Поиск строки в массиве строк
boolf_is = false; // флаг, сигнализирующий о наличии строки в массиве
intindex = -1; // позиция строки в массиве

for (inti = 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.
Positionis 2

Пример подсчета количества вхождений заданной строки в массиве строк

В примере ниже вводится строка и массив строк. Дальше осуществляется подсчет количества вхождений заданной строки в массиве строк.

using System;

namespace ConsoleApp8
{
classProgram
{
static void Main(string[] args)
{
// Вычисление количества вхождений заданной строки в массиве строк
// 1. Объявление переменных
string[] AS; // массив строк
intcount; // количество элементов в массиве
stringstr; // строка, количество вхождений которой вычисляется
intn_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 (inti=0;i<AS.Length;i++)
{
Console.Write(«AS[{0}] = «, i);
AS[i] = Console.ReadLine();
}

// 7. Подсчет количества вхождений
n_occurs = 0;
for (inti = 0; i<AS.Length; i++)
if (str == AS[i])
n_occurs++;

// 8. Вывод результата
Console.WriteLine(«n_occurs = {0}», n_occurs);

Console.ReadKey();
}
}
}

Результат выполнения программы

Enterstring:
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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *