Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Малыхина. Массивы....doc
Скачиваний:
22
Добавлен:
22.05.2015
Размер:
502.27 Кб
Скачать

11.2 Массив символов

Некоторые алгоритмы обработки символьной информации могут оперировать массивом символов, а значит, им доступны возможности класса Array, приведенные в главе 8. Рассмотрим это.

Пример 1. Дана строка символов s. Напечатать в алфавитном порядке: какие строчные русские буквы встречаются в этой строке. 

Одним из вариантов решения данной задачи может быть такой. Опишем дополнительную строку p, где будет представлен весь русский алфавит строчными буквами, как массив символов.

Данный массив, также как и массив символов s, получен в программе (лист.1) путем преобразования строки в массив методомToCharArrayклассаSystem.String (табл. 11.2).Естественно длина такого массива будет определяться числом33. Анализ введенного массиваsв этом случае может быть организован с помощью двух вложенных циклов.

В предложенной программе внешний цикл перебирает посимвольно буквы русского алфавита из массива р, и для его построения используется цикл с параметром. Конечное значение параметра этого цикла вычисляется в заголовке цикла с помощью функцииLength(p), хотя можно было просто записать его значение явно, равное33.

Внутренний цикл –это цикл с постусловием. Параметром его является переменнаяj, определяющая индекс анализируемого элемента массиваsи увеличивающая свое значение в цикле с шагом+1, тем самым, обеспечивая просмотр всех его элементов (от первого до последнего).

Если найден элемент массива s, совпадающий с рассматриваемой буквой алфавита, определенной во внешнем цикле, то выполняются печать этого элемента и принудительное завершение внутреннего цикла процедуройbreak. Это исключает дублирование символов в массивеs.

После прерывания выполнения внутреннего цикла внешний цикл начинает работать со следующим элементом массива-алфавита, и для него все повторяется сначала.

Листинг 1

using System;

namespace ConsoleApplication3

{ class Program

{ static void Main(string[] args)

{ char[] p = "абвгдежзийклмнопрстуфхцчшщъыьэюя".ToCharArray();

Console.WriteLine();

char[] s = "мама мыла раму".ToCharArray();

for (int i = 0; i < p.Length; ++i)

{ int j = 0;

do

{ if (p[i] == s[j])

{ Console.Write(" " + s[j]);

break;

}

j++;

}

while (j < s.Length);

}

Console.Read();

}

}

}

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

Далее приведен пример, в котором при обработке массива символов использованы методы класса System.Char(лист. 2).

Пример 2. Дан массив символов. Требуется написать программу, распознающую некоторые категории символов.

Листинг 2

using System;

namespace ConsoleApplication1

{ class Program

{ static void Main(string[] args)

{ char q;

Console.WriteLine();

char[] s = "Столов 25".ToCharArray();

int j = 0;

do

{q=s[j];

if (char.IsLetter(q)) Console.Write("Буква "+q);

if (char.IsUpper(q)) Console.WriteLine(" Верхний рег.");

if (char.IsLower(q)) Console.WriteLine(" Нижний рег.");

if (char.IsSeparator(q)) Console.WriteLine("Разделитель");

if (char.IsNumber(q)) Console.WriteLine("Число "+q);

j++;

}

while (j < s.Length); }

}

}

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

В данной программе рассматривается массив символов s. Для определения категории каждого символа массива организован цикл с постусловием, в котором проводится проверка, не требующая дополнительных пояснений, и вывод информации.