В каких случаях целесообразно использовать ступенчатые массивы? — КиберПедия 

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

В каких случаях целесообразно использовать ступенчатые массивы?

2019-12-21 389
В каких случаях целесообразно использовать ступенчатые массивы? 0.00 из 5.00 0 оценок
Заказать работу

Ступенчатые массивы являются эффективными в случаях, если у двумерных прямоугольных массивов есть много элементов, которые вообще не используются. Это позволяет сэкономить память за счет выделения только необходимого объема памяти (количества элементов) для каждой строки ступенчатого массива.

31

Все массивы в C# построены на основе класса Array из пространства имен System. Этот класс определяет ряд свойств и методов, которые мы можем использовать при работе с массивами. Основные свойства и методы:

  • Свойство Length возвращает длину массива
  • Свойство Rank возвращает размерность массива
  • Статический метод BinarySearch() выполняет бинарный поиск в отсортированном массиве
  • Статический метод Clear() очищает массив, устанавливая для всех его элементов значение по умолчанию
  • Статический метод Copy() копирует часть одного массива в другой массив
  • Статический метод Exists() проверяет, содержит ли массив определенный элемент
  • Статический метод Find() находит элемент, который удовлеворяет определенному условию
  • Статический метод FindAll() находит все элементы, которые удовлеворяет определенному условию
  • Статический метод IndexOf() возвращает индекс элемента
  • Статический метод Resize() изменяет размер одномерного массива
  • Статический метод Reverse() располагает элементы массива в обратном порядке
  • Статический метод Sort() сортирует элементы одномерного массива

Разберем самые используемые методы. Например, изменим порядок элементов и размер массива:

1 2 3 4 5 6 7 8 9 10 11 12 int[] numbers = { -4, -3, -2, -1,0, 1, 2, 3, 4 };   // расположим в обратном порядке Array.Reverse(numbers);   // уменьшим массив до 4 элементов Array.Resize(ref numbers, 4);   foreach(int number in numbers) { Console.Write($"{number} \t"); }

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

4        3        2        1

В функции Resize первым параметром является изменяемый массив, а второй - количество элементов, которые должны быть в массиве. Если второй параметр меньше длины массива, то массив усекается. Если значение параметра, наоборот, больше, то массив дополняется дополнительными элементами, которые имеют значение по умолчанию.

Метод Copy копирует часть одного массива в другой:

1 2 3 4 5 6 7 8 9 10 11 int[] numbers = { -4, -3, -2, -1,0, 1, 2, 3, 4 }; int[] numbers2 = new int[5];   // копируем из numbers с 2-го индекса 5 элементов // и поместим их в массив numbers2, начиная с 0-го индекса Array.Copy(numbers, 2, numbers2, 0, 5);   foreach(int number in numbers2) { Console.Write($"{number} \t"); }

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

-2       -1       0        1        2

Отсортируем массив с помощью метода Sort():

1 2 3 4 5 6 7 8 int[] numbers = { -3, 10, 0, -5, 12, 1, 22, 3};   Array.Sort(numbers);   foreach(int number in numbers) { Console.Write($"{number} \t"); }

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

-5 -3 0  1 3 10 12 22

32

При отладке программ, использующих массивы, удобно иметь возможность генерировать исходные данные, заданные случайным образом. В библиотеке C# класс Random используется для таких целей.

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

Random a = new Random(); // 1

Random b = new Random(1); //2

Есть два вида конструктора: конструктор без параметров (оператор 1), который исполь­зует начальное значение генератора, вычисленное на основе текущего времени. В этом случае каждый раз создается уникальная последовательность. Конструк­тор с параметром типа int (оператор 2) задает начальное значение генерато­ра, что обеспечивает возможность получения одинаковых последовательно­стей чисел.

Для получения очередного значения серии пользуются методами, перечислен­ными в таблице 9.1.

Таблица 9.1 - Основные методы класса System.Random

Название Описание
Next () Возвращает целое положительное число во всем положительном диапазоне типа int
Next(мaкс) Возвращает целое положительное число в диапазоне [0, макс]
Next (мин, макс) Возвращает целое положительное число в диапазоне [мин, макс]
NextBytes(массив) Возвращает массив чисел в диапазоне [0, 255]
NextDoublе() Возвращает вещественное положительное число в диапазоне [0, 1)

Пример работы с генератором псевдослучайных чисел

using System:

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{

Random a = new Random();

Random b = new Random(1);

const int n = 10;

Console.WriteLine("\n Диапазон [0, 1]:");

for (int i = 0; i < n; ++i)

Console.Write("{0,6:0.##}", a.NextDouble());

Console.WriteLine("\n Диапазон [0, 1000]:");

for (int i = 0; i < n; ++i)

Console.Write(" " + b.Next(1000));

Console.WriteLine("\n Диапазон [-10, 10]:");

for (int i = 0; i < n; ++i)

Console.Write(" " + a.Next(-10, 10));

Console.WriteLine("\n Массив [0, 255]:");

byte[] mas = new byte[n];

a.NextBytes(mas);

for (int i = 0; i < n; ++i) Console.Write(" " + mas[i]);

} } }

33

Символьный тип char базируется на стандартном классе Char библиотеки .NET из пространства имен System. Он является встроенным типом языка и предназначен для хранения символов в Unicode.

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

char q;

do

{

Console.WriteLine("Введите символ: ");

q = char.Parse (Console.ReadLine());

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

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

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

if (char.IsControl(q)) Console.WriteLine("Управляющий");

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

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

}

while (q!='/');

}

}

}

34


Поделиться с друзьями:

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.