Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 7 Многомер массивы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
222.72 Кб
Скачать

2.3 Оператор цикла с перебором foreach

Цикл перебора foreach используется для просмотра всех объектов из некоторой группы данных – коллекции. В языке С# определен ряд типов коллекций, например, коллекцией являются массивы.

Синтаксис записи цикла foreach:

foreach(тип имя_переменной in имя коллекции) выражение;

где тип и имя_переменной задают тип и имя итерационной переменной, которая в процессе итераций цикла foreach получает значения элементов коллекции, заданной своим именем.

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

Рассмотрим программу поиска максимального элемента в одномерном массиве.

Листинг 4 - Использование оператора цикла foreach для поиска наибольшего элемента одномерного массива

using System;

namespace ConsoleApplication5

{

class Program

{

static void Main(string[] args)

{

const int n = 6;

int[] a = new int[n] { 3, 12, 5, -9, 8, -4 };

Console.WriteLine("Исходный массив:");

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

Console.WriteLine("\t" + a[i]);

Console.WriteLine();

int max = a[0];

foreach (int x in a)

{

if (x > max)

max = x;

}

Console.WriteLine("Максимальный элемент = " + max);

Console.Read();

}

}

}

Как видно из текста программы цикл foreach последовательно просматривает все элементы массива а и присваивает итерационной переменной х значение очередного элемента массива. Значение х в дальнейшем используется в операторе if для коррекции переменной max.

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

Следует отметить тот факт, что не всегда требуется просматривать всю коллекцию до конца, например, в задаче, где требуется найти первый отрицательный элемент. После того как отрицательный элемент найден, можно прервать работу цикла с помощью оператора break.

При работе с многомерными массивами цикл foreach возвращает элементы в порядке следования строк.

Листинг 5 - Использование оператора цикла foreach для поиска наибольшего элемента двумерного массива

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

const int m = 3, n = 4;

int[,] y = new int[m, n] {

{ 2, 2, 8, 9 },

{ 4, 5, 6, 2 },

{ 7, 0, 1, 1 }

};

Console.WriteLine("Исходный массив:");

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

{

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

Console.Write(" " + y[i, j]);

Console.WriteLine();

}

int max = y[0, 0];

foreach (int x in y){

if (x > max) max = x;

}

Console.WriteLine("Наибольший элемент в матрице " + max);

Console.Read();

}

}

}

Как видно из текста программы использование одного оператора foreach позволило заменить два вложенных оператора for в поиске наибольшего элемента двумерного массива.

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