На этом шаге мы приведем еще одну программу, использующую одномерный массив.
Еще один небольшой пример касается создания символьного массива (массива с элементами типа char). Размер массива определяется значением переменной. После создания массив заполняется случайными символами. Содержимое массива отображается в прямом и обратном порядке. Код программы представлен ниже.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr50_1 { class Program { static void Main() { // Объект для генерирования случайных чисел: Random rnd = new Random(); // Размер массива и индексная переменная: int size = 10, k; // Создание символьного массива: char[] symbs = new char[size]; // Отображение сообщения: Console.WriteLine("Массив случайных символов:"); // Заполнение массива случайными символами: for(k = 0; k < symbs.Length; k++) { // Значение элемента массива: symbs[k] = (char)('A'+rnd.Next(26)); // Отображение значения элемента массива: Console.Write("| " + symbs[k] + " "); } Console.WriteLine("|"); // Отображение сообщения: Console.WriteLine("Массив в обратном порядке:"); for(k = symbs.Length-1; k >= 0; k--){ // Отображение значения для элемента массива: Console.Write("| " + symbs[k] + " "); } Console.WriteLine("|"); // Задержка: Console.ReadLine(); } } }
Как отмечалось в начале этого шага, в программе массив заполняется случайными символами. Для генерирования случайных символов нам понадобятся случайные целые числа.
Генерируются случайные числа с помощью специального объекта rnd, который создается на основе класса Random (из пространства имен System) командой
Random rnd = new Random();
Random rnd = new Random();
Символьный массив создается командой
char[] symbs = new char[size];
Для заполнения массива случайными символами мы используем цикл. Индексная переменная k в конструкции цикла принимает целочисленные значения от 0 и строго меньше symbs.Length (размер массива), увеличиваясь за каждый цикл на единицу. Значение элементу массива symbs с индексом k присваивается командой
symbs[k] = (char)('A'+rnd.Next(26));
Следовательно, к символу 'А' прибавляется целое число (речь о выражении 'A'+rnd.Next(26)). Результат выражения вычисляется так: к коду символа 'А' (значение 65, но в данном случае это не важно) прибавляется целочисленное слагаемое. В итоге получаем целое число. Перед всем выражением указана инструкция приведения к символьному типу (char). Поэтому полученное числовое значение интерпретируется как код символа в кодовой таблице. Поскольку в английском алфавите 26 букв, а в кодовой таблице буквы расположены в соответствии с алфавитом, то результатом выражения
(char)('A'+rnd.Next(26))
После того как значение элементу массива присвоено, командой
Console.Write("| " + symbs[k] + " ");
Как и в примере предыдущего шага, мы используем вертикальные разделители и пробелы при отображении значений элементов массива. Последний разделитель отображается командой
Console.WriteLine("|");
Для отображения содержимого массива в обратном порядке мы используем еще одну конструкцию цикла. В нем индексная переменная k (мы используем ту же переменную, что и в первой циклической конструкции) за каждую итерацию уменьшает значение на единицу, начиная с начального значения symbs.Length-1 (значение индекса последнего элемента в массиве symbs) до значения 0 включительно (использовано условие k>=0). За каждый цикл командой
Console.Write("| " + symbs[k] + " ");
Результат выполнения программы может быть следующим.
Рис.1. Результат выполнения приложения
Поскольку в программе использован генератор случайных чисел, то от запуска к запуску значения у элементов массива могут (и будут) меняться. Неизменным остается тот факт, что во втором случае значения элементов отображаются в обратном порядке по сравнению с тем, как они отображались вначале.
На следующем шаге мы рассмотрим инициализацию массива.