Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

KN_6_2013-2014 / НПП_6_з_2013 / НПП_6_з_2013 / Лаб_ раб_мас

.doc
Скачиваний:
11
Добавлен:
29.02.2016
Размер:
493.57 Кб
Скачать

Лабораторная работа

Тема. Работа с массивами.

Ход выполнения работы.

Создать Windows Forms приложение для решения задачи, для чего:

  1. Сформировать значения элементов массива с использованием методов класса Random. Размерность массива задается с использованием элементов управления приложения.

  2. Отобразить элементы сформированного входного массива в элементе управления DatagridView. Предусмотреть очистку элементов приложения для возможности формирования нового массива.

  3. В приложении предусмотреть также отображение результатов решения задания. Для запуска выполнения заданий предусмотреть элементы управления(кнопка или переключатель и др.)

  4. При создании приложения использовать создание методов, предусмотреть обработку исключительных ситуаций и др. эффективные для решения даной задачи средства платформы .NET.

Индивидуальные задания.

Часть 1.

  1. Подсчитать среднее арифметическое нечетных элементов, расположенных выше главной диагонали.

  2. Подсчитать среднее арифметическое четных элементов, расположенных ниже главной диагонали.

  3. Подсчитать сумму элементов, расположенных на побочной диагонали.

  4. Подсчитать среднее арифметическое ненулевых элементов, расположенных над побочной диагональю.

  5. Подсчитать среднее арифметическое элементов, расположенных под побочной диагональю.

  6. Поменять местами столбцы по правилу: первый с последним, второй с предпоследним и т.д.

  7. Поменять местами две средних строки, если количество строк четное, и первую со средней строкой, если количество строк нечетное.

  8. Поменять местами два средних столбца, если количество столбцов четное, и первый со средним столбцом, если количество столбцов нечетное.

  9. Если количество строк в массиве четное, то поменять строки местами по правилу: первую строку со второй, третью – с четвертой и т.д. Если количество строк в массиве нечетное, то оставить массив без изменений.

  10. Если количество столбцов в массиве четное, то поменять столбцы местами по правилу: первый столбец со вторым, третий – с четвертым и т.д. Если количество столбцов в массиве нечетное, то оставить массив без изменений.

  11. Вычислить Аn, где n – натуральное число.

  12. Подсчитать норму матрицы по формуле .

  13. Подсчитать норму матрицы по формуле .

  14. Вывести элементы матрицы в следующем порядке:

  15. Выяснить, является ли матрица симметричной относительно главной диагонали.

  16. Заполнить матрицу числами от 1 до n (где n=mk, а m – количесто строк, а k – количество столбцов прямоугольной матрицы) следующим образом:

  1. Определить, есть ли в данном массиве строка, состоящая только из положительных элементов.

  2. Определить, есть ли в данном массиве столбец, состоящий только из отрицательных элементов.

  3. В каждой строке найти максимум и заменить его на противоположный элемент.

  4. В каждом столбце найти минимум и заменить его нулем.

Часть 2.

  1. Найти максимальный элемент в каждой строке и записать данные в новый массив.

  2. Найти минимальный элемент в каждом столбце и записать данные в новый массив.

  3. Четные столбцы таблицы заменить на вектор Х.

  4. Нечетные строки таблицы заменить на вектор Х.

  5. Вычислить А*Х, где А – двумерная матрица, X – вектор.

  6. Для каждой строки подсчитать количество положительных элементов и записать данные в новый массив.

  7. Для каждого столбца подсчитать сумму отрицательных элементов и записать данные в новый массив.

  8. Для каждого столбца подсчитать сумму четных положительных элементов и записать данные в новый массив.

  9. Для каждой строки подсчитать количество элементов, больших заданного числа, и записать данные в новый массив.

  10. Для каждого столбца найти первый положительный элемент и записать данные в новый массив.

  11. Для каждой строки найти последний четный элемент и записать данные в новый массив.

  12. Для каждого столбца найти номер последнего нечетного элемента и записать данные в новый массив.

  13. Для каждой строки найти номер первого отрицательного элемента и записать данные в новый массив.

  14. Для каждой строки найти сумму элементов с номерами от k1 до k2 и записать данные в новый массив.

  15. Для каждого столбца найти произведение элементов с номерами от k1 до k2 и записать данные в новый массив.

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

  17. Подсчитать сумму элементов каждой строки и записать данные в новый массив. Найти максимальный элемент нового массива.

  18. Подсчитать произведение элементов каждого столбца и записать данные в новый массив. Найти минимальный элемент нового массива.

  19. Для каждой строки найти номер первой пары неравных элементов. Данные записать в новый массив.

  20. Для каждого столбца найти номер первой пары одинаковых элементов. Данные записать в новый массив.

Теоретическая справка

Использование DatagridView

dataGridView2.ColumnCount = n;

dataGridView2.Columns[0].Name = "Column0";

dataGridView2.Rows.Add();

dataGridView2.Rows[i].HeaderCell.Value= "row" + i.ToString();

dataGridView2.Rows[j].Cells[j].Value = dd;

string dfh = dataGridView2.Rows[i].Cells[i].Value.ToString();

Класс Random и его функции

Умение генерировать случайные числа требуется во многих приложениях. Класс Random содержит все необходимые для этого средства. Класс Random имеет конструктор класса: для того, чтобы вызывать методы класса, нужно вначале создавать экземпляр класса. Этим Random отличается от класса Math, у которого все поля и методы – статические, что позволяет обойтись без создания экземпляров класса Math.

Как и всякий “настоящий” класс, класс Random является наследником класса Object, а, следовательно, имеет в своем составе и методы родителя. Рассмотрим только оригинальные методы класса Random со статусом public, необходимые для генерирования последовательностей случайных чисел. Начнем рассмотрение с конструктора класса. Он перегружен и имеет две реализации. Одна из них позволяет генерировать неповторяющиеся при каждом запуске серии случайных чисел. Начальный элемент такой серии строится на основе текущей даты и времени, что гарантирует уникальность серии. Этот конструктор вызывается без параметров. Он описан как public Random(). Другой конструктор с параметром – public Random (int) обеспечивает важную возможность генерирования повторяющейся серии случайных чисел. Параметр конструктора используется для построения начального элемента серии, поэтому при задании одного и того же значения параметра серия будет повторяться.

Перегруженный метод public int Next() при каждом вызове возвращает положительное целое, равномерно распределенное в некотором диапазоне. Диапазон задается параметрами метода. Три реализации метода отличаются набором параметров:

  • public int Next () – метод без параметров выдает целые положительные числа во всем положительном диапазоне типа int;

  • public int Next (int max) – выдает целые положительные числа в диапазоне [0,max];

  • public int Next (int min, int max) – выдает целые положительные числа в диапазоне [min,max].

Метод public double NextDouble () имеет одну реализацию. При каждом вызове этого метода выдается новое случайное число, равномерно распределенное в интервале [0-1).

Еще один полезный метод класса Random позволяет при одном обращении получать целую серию случайных чисел. Метод имеет параметр - массив, который и будет заполнен случайными числами. Метод описан как public void NextBytes (byte[] buffer). Так как параметр buffer представляет массив байтов, то, естественно, генерированные случайные числа находятся в диапазоне [0, 255].

пример работы со случайными числами

/// <summary>

/// Эксперименты с классом Random

/// </summary>

public  void Rand()

{

const int  initRnd = 77;

Random realRnd = new Random();

Random repeatRnd = new Random(initRnd);

// случайные числа в диапазоне [0,1)

Console.WriteLine("случайные числа в диапазоне[0,1)");

for(int i =1; i <= 5; i++)

{

Console.WriteLine("Число " + i + "= "

+ realRnd.NextDouble() );

}

// случайные числа в диапазоне[min,max]

int min = -100, max=-10;

Console.WriteLine(“случайные числа в диапазоне [" +

min +"," + max + "]“);

for(int i =1; i <= 5; i++)

{

Console.WriteLine(“Число ” + i + “= “

+ realRnd.Next(min,max) );

}

// случайный массив байтов

byte[] bar = new byte[10];

repeatRnd.NextBytes(bar);

Console.WriteLine(“Массив случайных чисел в диапазоне

[0, 255]“);

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

{

Console.WriteLine(“Число ” + i + “= ” +bar[i]);

}

}//Rand

Вначале создаются два объекта класса Random. У этих объектов разные конструкторы. Объект с именем realRnd позволяет генерировать неповторяющиеся серии случайных чисел. Объект repeatRnd дает возможность повторить при необходимости серию. Метод NextDouble создает серию случайных чисел в диапазоне [0, 1). Вызываемый в цикле метод Next с двумя параметрами создает серию случайных положительных целых, равномерно распределенных в диапазоне [-100, -10]. Метод NextBytes объекта repeatRnd позволяет получить при одном вызове массив случайных чисел из диапазона [0, 255]. Результаты вывода можно увидеть на рис. 7.2.

Рис. 7.2. Генерирование последовательностей случайных чисел в процедуре Rand

Соседние файлы в папке НПП_6_з_2013