Практический пример. Ступенчатый массив и обработка исключений


 

Программа осуществляет циклический сдвиг строк "ступенчатого массива" вниз. Все элементы массива задаются случайным образом. Материал по обработке исключений представлен в разделе обработка исключений лабораторной работы №2.

 

using System; namespace CSharpApplication.ArraysExample{ class Arrays { // Циклический сдвиг строк матрицы вниз static void RotateDown(int [][] mtr) { /* Получаем размерность (число строк) */ int M = mtr.GetLength(0); // Запоминаем нижнюю строку int [] temp = mtr[M - 1]; for(int i = M - 1; i > 0; i--) { // Сдвиг (перемещаем адреса строк) mtr[i] = mtr[i - 1]; } // Устанавливаем верхнюю строку mtr[0] = temp; } // Вывод матрицы static void Print(int [][] mtr) { // Определение числа строк int M = mtr.GetLength(0); for(int i = 0; i < M; i++) { /* * Обходимся без получения размерности */ // Перебор элементов строки foreach(int j in mtr[i]) { Console.Write("{0,8}", j); } Console.WriteLine(); } Console.WriteLine(); } // Инициализация матрицы случайными значениями static void Init(int [][] mtr) { // Инициализация генератора случайных чисел Random rand = new Random(); /* Получаем размерность (число строк) */ int M = mtr.GetLength(0); for(int i = 0; i < M; i++) { /* Другой способ получения размерности (число столбцов) */ int N = mtr[i].Length; for(int j = 0; j < N; j++) { // Забиваем массив случайными числами // от 0 до 99999 mtr[i][j] = rand.Next(100000); } } } static void Main() { // Число строк uint M = 0; Console.WriteLine("Введите количество строк: "); try { // Ввод числа строк с клавиатуры M = Convert.ToUInt32(Console.ReadLine()); } catch(OverflowException ex) { // В случае ошибочного ввода (переполнения) Console.WriteLine(ex.Message + " Use default size (=10)"); } catch(FormatException ex) { // В случае ошибочного ввода Console.WriteLine(ex.Message + " Use default size (=10)"); } // Если все плохо, то создадим массив из 10 строк if(M == 0) M = 10; // Создание массива ("указателей") int [][] ar = new int[M][]; // Число столбцов uint N = 0; for(int i = 0; i < M; i++) { Console.WriteLine("Введите количество столбцов: "); try { // Ввод числа столбцов для каждой строки N = Convert.ToUInt32(Console.ReadLine()); } catch(OverflowException ex) { // В случае ошибочного ввода (переполнения) Console.WriteLine(ex.Message + " Use default size (=10)"); } catch(FormatException ex) { // В случае ошибочного ввода Console.WriteLine(ex.Message + " Use default size (=10)"); } // Если все плохо, то создадим массив из 10 элементов if(N == 0) N = 10; // Создание массива ar[i] = new int[N]; } Console.WriteLine("\"Ступенчатая матрица\":"); // Инициализация Init(ar); // Вывод Print(ar); Console.WriteLine("Та же матрица после серии циклических сдвигов:"); for(int i = 0; i < M; i++) { // Циклический сдвиг RotateDown(ar); // Вывод Print(ar); } } }}

 

Задание

 

1. Изучить понятие классов, объектов и области их эффективного использования; возможности языка программирования С# для работы с классами.

2. На основе индивидуального задания к лабораторной работе №4 (табл. 6) разработать одноименный класс, описывающий динамический одномерный массив и операции с ним.

3. Класс должен содержать такие закрытые члены:

- длина массива;

- ссылка на массив;

а также следующие открытые методы:

- конструктор без параметров, содержащий инициализатор массива нулевыми элементами;

- конструктор с параметрами, инициализирующий массив длины, вводимой с клавиатуры, случайных чисел в заданном диапазоне;

- копирующий конструктор, создающий копию объекта с исходным массивом;

- деструктор, уничтожающий массив;

- метод модификации элемента массива, заданного его индексом;

- метод, реализующий заданную обработку массива;

- метод вывода элементов массива на консоль.

При программировании методов обрабатывать необходимые исключения (обращение к элементам массива, арифметика).

Конструкторы и деструктор должны выводить сообщение о своем срабатывании.

4. Составить программу на языке программирования С#, в которой предусмотреть:

- создание массива ar0 заданной длины с нулевыми элементами;

- создание массива ar1 с длиной, вводимой с клавиатуры;

- инициализацию массива ar1 случайными числами в заданном диапазоне;

- копирование массива ar1 в новый массив arN;

- модификацию произвольных элементов массива ar1;

- выполнение обработки массива arN;

- вывод массивов на всех стадиях вычислений;

- обработку необходимых исключений (ввод данных, обращение к элементам массива, арифметика).

- конструкторы и деструктор должны выводить сообщения о своем выполнении.

5. Составить блок-схему для каждого метода класса.

 

Содержание отчета

 

1. Титульный лист.

2. Цель работы, индивидуальное задание (таблица).

3. Листинг программы.

4. Блок-схемы методов класса.

5. Результаты тестирования всех методов, в том числе обработки исключений.

6. Описание различий в работе конструкторов.

7. Выводы.

 

Контрольные вопросы

 

  1. Что такое класс?
  2. Синтаксис объявления класса.
  3. Члены класса и порядок их размещения в теле класса.
  4. Что такое метод? Какие бывают методы?
  5. Модификаторы прав доступа.
  6. Особенности применения статических членов класса.
  7. Аргументы метода класса. Что такое передача параметра по значению?
  8. Что такое передача параметра по ссылке? Отличия от передачи по назначению
  9. Что такое объект? Где расположен объект при выполнении программы?
  10. Способы создания объектов.
  11. Что такое конструктор?
  12. Назначение и виды конструкторов.
  13. Что такое инициализатор? Пример.
  14. Что такое копирующий конструктор? Его отличия от конструктора с параметрами.
  15. Назначение ключевого слова this.
  16. Что такое деструктор?
  17. Что такое сборщик мусора?
  18. Что такое «Алгоритм пометки и сжатия»?
  19. Как и когда вызывается деструктор?
  20. В каком порядке происходит уничтожение объектов?

 



Дата добавления: 2021-12-14; просмотров: 241;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.