Тема: Массивы.
Цель: Формирование навыков применения массивов, закрепление навыков составления блок-схем.
Вид работы: индивидуальный.
Время выполнения: 2 часа.
Теоретический материал
Тип массив – структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя.
Каждый элемент массива однозначно определяется именем и индексом (номером элемента в массиве).
Индексы массива принадлежат целочисленному типу. Массивы позволят легко обрабатывать большое количество связанных переменных.
Массив может быть:
- одномерным A1 [ ]
- двумерным A2 [ , ]
Формат объявления одномерного массива в C#:
тип[ ] ИмяМассива = new тип [размер];
Формат объявления двумерного массива в C#:
тип [ , ] ИмяМассива = new тип [количество строк, количество столбцов];
тип – type – имя типа значений элементов.
[ ] – признак массива. Запятые внутри скобок задают размерность массива. Запятых нет – массив одномерный, запятая одна – массив двумерный, запятых больше – массив многомерный.
new – оператор, предназначенный для создания объекта любого классового типа, позволяет динамически размещать в памяти элементы массива.
размер – количество элементов, которые будут храниться в массиве.
Элементы массива могут быть любых типов.
Доступ к элементу массива осуществляется посредством индекса (позицию элемента внутри массива): ИмяМассива [ НомерЭлемента ].
Индексация массивов начинается с нуля: массив с элементами n индексируется от 0 до n-1. При обращении к элементу массива, надо указать его имя и номер элемента в квадратных скобках.
Например: A[0] – первый элемент массива A.
A[4] – пятый элемент массива А.
B[2,3] – элемент, лежащий на пересечении 3 строки и 4 столбца массива B.
Примеры объявления массивов:
static void Main(string[] args)
{
int[ ] А = new int[5]; // одномерный массив А из 5 целых чисел
char[ ] H = new char[10];// одномерный массив H из 10 символов
double[,] M = new double [2, 3]; // двумерный массив 2х3 вещественных чисел, содержащий 2 строки и 3 столбца
}
При объявлении массива можно выполнить его инициализацию, т.е. присвоить начальные значения элементам массива в момент его создания.
Примеры объявления массивов с инициализацией:
int[ ] С = new int[ ] { 1, 3, 5, -7, 9 }; // массив С инициализирован пятью элементами
double[ ] D = { 1.5, 2.1, 3.65, 4.7, 5.14, 6.36 }; // Альтернативный синтаксис
char[ ] Q = {'a','b','g'}; //массив Q инициализирован тремя символами
string[ ] Team = {"Zenith", "Dynamo", "Sparta", "Rotor", "CSK"};
int[ , ] M= { { 1, 2, 3 }, { 4, 5, 6 } }; // массив M: 2 строки и 3 столбца инициализирован
int[ ,] L ={{0,2,4,6},{2,9,6,3},{4,7,5,8}, {1,6,5,7}}; //массив L (4х4) инициализирован
При инициализации допустимо указывать размер массива, но количество элементов списка инициализации должно соответствовать размерности массива. Иначе компилятор выведет сообщение об ошибке. Например: Int [ ] nems – new int [ 10 ] { 99, 10, 100, 15, 76, 23, 85, 9 , 87, 49};
Типовые операции при работе с массивами:
- Вывод массива;
- Ввод массива;
- Поиск максимального/минимального элемента массива;
- Поиск заданного элемента массива;
- Сортировка массива.
Часто используемые операции: накопление суммы элементов массива, расчет среднего арифметического значения элементов массива.
При выводе всех элементов массива удобно использовать оператор цикла for или foreach, при этом переменная счетчик может быть использована в качестве индекса элементов массива.
Пример вывода одномерного массива Team:
static void Main(string[] args)
{
string[] Team = { "Zenit ", "Dynamo ", "Sparta ", "Rotor ", "CSK " };
foreach (string i in (string[])Team)
{
Console.Write("{0} ", i); //вывод элементов массива Team
}
Console.ReadKey();
}
При вводе элементов массива удобно использовать оператор цикла for или foreach, при этом переменная счетчик может быть использована в качестве индекса элементов массива.
Иногда в качестве элементов массива используют случайные числа, которые можно получить с помощью функции Random() - случайное число в диапазоне 0..1.
Программа помещает в массив A числа от 0 до 9.
static void Main(string[] args)
{
int[] A = new int[10]; // одномерный массив А из 10 целых чисел
for (int i=0; i<10; i++)
A[i] = i;
for (int i = 0; i < 10; i++)
Console.WriteLine("A[" + i + "]=" + A[i]);
Console.ReadKey();
}
Ход работы:
Выполнить задание, алгоритм записать, блок-схему зарисовать, ответить на вопросы.
Задания
1. Скомпилировать следующий алгоритм, реализующий заполнение двумерного массива Т[3x4] числами от 1 до 12. Блок-схема решения представлена на рисунке 9.
static void Main(string[] args)
{
int[ , ] T = new int[3,4];
Console.WriteLine("Сформированная матрица");
Console.WriteLine();
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 4; ++j)
{
T[i, j] = (i * 4) + j + 1;
Console.Write("{0,2} ",T[i, j]);
}
Console.WriteLine();
}
Console.ReadKey();
}
Рисунок 9 – Блок-схема алгоритма решения задачи
2. Скомпилировать следующий алгоритм, реализующий в массиве X из 10 элементов поиск наибольшего элемента и определение его номера. Блок-схема решения представлена на рисунке 10.
static void Main(string[] args)
{
int[] X = new int[10]{-5, 6, -8, 2, 4, 9, -7, 4, 1, 0};
// одномерный массив Х из 10 целых чисел
int Xmax; // максимальный элемент
int Imax; // номер максимального элемента
for (int i = 0; i < 10; i++)
Console.WriteLine("X[" + i + "]=" + X[i]);
Console.WriteLine(); // вывод элементов массива
Xmax = X[0]; // предположение
Imax = 0;
for (int i = 1; i < 10; i++)
if (X[i] > Xmax)
{
Xmax = X[i]; // выявление max
Imax = i;
}
Console.WriteLine("Максимальный элемент: {0} ", Xmax);
Console.WriteLine("Его номер: {0} ", Imax+1);
Console.ReadKey();
}
Рисунок 10– Блок-схема алгоритма решения задачи
При выявлении минимального элемента условие > заменяется на < :
if (X[i] < Xmin)
{
Xmin = X[i]; // выявление min
Imin = i; // его номера
}
3. Скомпилировать следующий алгоритм, реализующий поиск заданного элемента в массиве и вывод его на экран дисплея. Блок-схема решения представлена на рисунке 11.
Рисунок 11– Блок-схема алгоритма решения задачи
static void Main(string[] args)
{
int[] Mas = new int[10]{-5, 6, -8, 2, 4, 9, -7, 4, 1, 0};
// одномерный массив Mas из 10 целых чисел
int obr; // образец для поиска
bool Yes; // признак обнаружения
int i; //счетчик цикла
for (i = 0; i < 10; i++)
Console.WriteLine("Mas[" + i + "]=" + Mas[i]);
Console.WriteLine();
Console.WriteLine("Введите образец для поиска");
obr = Convert.ToInt16(Console.ReadLine());
Yes = false;
i=0;
do
{
if (Mas[ i ]==obr )
{
Yes=true;
break;
}
else i=i+1;
}
while ( i<10 | Yes == true);
if (Yes == true) Console.WriteLine("Имеется
совпадение с элементом {0}. Его индекс: {1}", Mas[i], i );
else Console.WriteLine("Совпадение с образцом отсутствует ");
Console.ReadKey();
}
Контрольные вопросы:
1) Что является массивом?
2) Что является размерностью массива?
3) Что является признаком массива?
4) Каким образом объявляются одномерные и двумерные массивы?
Какие операции применяются при работе с массивами?
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.