Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зачёт С#.docx
Скачиваний:
17
Добавлен:
10.12.2018
Размер:
100.55 Кб
Скачать

11. Двумерныемассивы в c#. Виды двумерных массивов и способы их определения. Способы создания двумерных массивов. Вывод матриц на экран по строкам.

Двумерные массивы. Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор однотипных данных, имеющий общее имя, доступ к элементам которого осуществляется по двум индексам. Наглядно двумерный массив удобно представлять в виде таблицы, в которой n строк и m столбцов, а под ячейкой таблицы, стоящей в i-й строке и j-м столбце понимают некоторый элемент массива a[i,j].

Рассмотрим простейший многомерный массив – двумерный или прямоугольный. При его объявлении в [ ] через запятую указывается размер массива для каждого измерения. Объявим, например, матрицу 1020 целых чисел:

int [,] Matrix = new int[10,20]; // Создаётся ссылочная переменная двумерного массива

Виды двумерных массивов: прямоугольные и квадратные.

Двумерный квадратный массив - это массив в каждой строке которых одинаковое число столбцов. Он инициализируется так: string [,] (двумерный массив строк). Второй вид - прямоугольные массивы. Каждый ряд этого массива может содержать различное число столбцов. При создании нервных массивов на самом деле формируется массив массивов

Способы создания элементов двумерного массива:

Способ №1. Инициализация элементов массива константами в момент его создания. Список инициализаторов каждой строки нужно заключать в свои фигурные скобки:

int [,] Matr = {

{10, 20, 30, 40},

{-10, -20, -30, -40},

{50, 60, 70, 80}

};

Способ №2. Ввод элементов массива с клавиатуры. (Привести пример самостоятельно.)

Способ №3. Генерация элементов массива случайным образом. (Привести пример самостоятельно.)

Способ №4. Алгоритмическое задание элементов.

Пример: заполним матрицу 34 числами от 1 до 12

using System;

Class Dwumas

{

public static void Main()

{

int i, j;

int [,] Matr1 = new int [3,4];

for (i = 0; i < 3; i + +)

{

for (j = 0; j < 4; j + 4)

{

Matr1 [i,j] = (i*4) + j + 1;

Console. Write(Matr1 [i,j] + “”);

}

Console. WriteLine();

}

}

Вывод матриц на экран по строкам. Реализовать построчный вывод на экран можно с помощью такого вида программного кода:

for (kk = 0; kk < n; kk++) { for (mm = 0; mm < n; mm++) Console.WriteLine(mas[kk, mm] + " "); }

12. Структуры в c#. Создание структур. Массивы структур.

Структуры, как и классы, используются как контейнерные типы данных, т.е. содержат данные разных типов. В отличии от Pascal в структурах есть не только поля(переменные разного типа), а и конструктуры, константы, свойства, методы… т. е. структуры поддерживают основные возможности классов. Структуры во многом схожи с классами.

Но классы - ссылочные типы данных и поэтому только ссылаются на данные, которые в них хранятся.

Структуры хранят действительные значения, поэтому не рекамендуется создавать объемные структуры, с множеством полей. В таком случаи нужно разрабатывать классы.

Объявление структуры: с помощью слова struct Имя { //тело структуры }

Рассмотрим пример использования структуры для хранения информации о книге.

// До Main()

struct Book

{

public string author;

public string title;

public int pages;

public string izdat;

// Создание структуры:

//В Main()

Book book3;

book3. author= "Э. Троелсен";

book3. title= "Язык программирования С# 2005 и платформа .NET";

book3. izdat="Санкт-Питербург - Москва – Киев изд. дом «Вильямс»";

book3. pages=116;

// Метод, который выводит содержимое структуры на экран:

public void Show()

{

Console.WriteLine(“Автор ” + author + “, заголовок “ + title + “, издательство “ + izdat + “, количество страниц ” + pages);

}

// В Main()

Book3. Show();

//Создание массив структур:

int i,n;

Console. WriteLine(“Введите количество книг”) ;

n = Int32. Parse(Console.ReadLine());

Book [ ] mas = new Book [n];

for (i = 0; i < mas. Length; i + +)

{

Console. WriteLine(“Введи информацию об ” + i + “ книге!”);

mas [i]. author = Console.ReadLine();

mas [i]. title = Console.ReadLine();

mas [i]. izdat = Console.ReadLine();

mas [i] . pages = Console.ReadLine();

}

//Содержимое массив структур:

Console. WriteLine(“Содержимое массива:”);

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

mas[i]. Show();

Одну структуру можно присваивать другой: book2= book3; При этом создается копия объекта-структуры.

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