Оператор foreach для работы с массивами




Оператор foreach применяется для перебора элементов в специальным образом организованной группе данных. Массив является такой группой. Удобство такого вида цикла заключается в том, что не требуется определять количество элементов и выполнять их перебор по индексу. Просто указывается необходимость перебора всех элементов группы. Синтаксис оператора:

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

 

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

Вывод массива a на экран с помощью оператора foreach:

// х - локальная переменная цикла, а - одномерный массив

foreach (int x in a) Console.WriteLine(x);

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

Ограничением применения оператора foreach является то, что с помощью его можно только просматривать значения в группе данных, но не изменять их.

Использование оператора foreach для вывода на экран двумерного массива имеет вид:

foreach (int [] x in a)

{

foreach (int y in x) Console.Write(“\t”+y);

Console.WriteLine();

}

Класс System.Array

Все массивы в С# построены на основе базового класса Array, который содержит свойства и методы, представленные в таблице

Свойство Описание
Length Количество элементов массива (по всем размерностям)
Rank Количество размерностей массива
BinarySearch Двоичный поиск в отсортированном массиве
Clear Выполняет начальную инициализацию элементов. В зависимости от типа элементов устанавливает значение 0 для арифметического типа, false - для логического типа, Null для ссылок, "" - для строк.
Copy Копирование части или всего массива в другой массив.
IndexOf Поиск индекса первого вхождения элемента в одномерный массив.
LastIndexOf Поиск индекса последнего вхождения элемента в одномерный массив.
Reverse Изменение порядка следования элементов на обратный.
Sort Сортировка элементов одномерного массива
CopyTo Копируются все элементы одномерного массива в другой одномерный массив, начиная с заданного индекса
GetLength Возвращает число элементов массива по указанному измерению.
GetValue, SetValue Возвращает или устанавливает значение элемента массива с указанными индексами.

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

Примеры обработки массивов с использованием класса Array

//ДВУМЕРНЫЙ МАССИВ

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

 

Console.Write("Введите количество строк массива: ");

int n=Convert.ToInt32(Console.ReadLine());

Console.Write("Введите количество столбцов массива: ");

int m=Convert.ToInt32(Console.ReadLine());

int[,] a = new int[n,m];

ВводМассива(a);

РешениеЗадачи(a);

ВыводМассива(a);

Console.ReadKey();

}

//----------------------------------------------------------------

public static void ВводМассива(Array a)

{

 

for (int i = 0; i < a.GetLength(0); ++i)

for (int j = 0; i < a.GetLength(1); ++i)

a.SetValue(Convert.ToInt32(Console.ReadLine()),i,j);

}

//----------------------------------------------------------------

public static void РешениеЗадачи(Array a)

{

for (int i = 0; i < a.GetLength(0); ++i)

for (int j = 0; i < a.GetLength(1); ++i)

{

//обработка массива – решение задачи

}

 

}

//----------------------------------------------------------------

public static void ВыводМассива(Array a)

{

// 1 способ

Console.WriteLine("Вывод массива: ");

for (int i = 0; i < a.GetLength(0); ++i)

{

for (int j = 0; i < a.GetLength(1); ++i)

Console.Write(“\t” +a[i,j]);

Console.WriteLine();

{

// 2 способ

Console.WriteLine("Вывод массива: ");

foreach (int [] x in a)

{

foreach (int y in x)

Console.Write("\t "+y);

Console.WriteLine();

}

}

} }}

Обнуление элементов двумерного массива можно выполнить, используя вложенный оператор for:

for (int k=0; k<3; k++)

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

a[k, m]=0;

Пример программирования с использованием
двумерного массива

Задание. Подсчитайте сумму всех элементов в двумерном массиве а[4, 5].

1. На рисунке 6.2 – разработка алгоритма:

– входные данные: a – массив, состоящий из вещественных чисел;

– выходные данные: sum – вещественная переменная, сумма всех элементов массива;

– промежуточные данные: i, j – счетчики циклов.

 

Рисунок 6.2 − Схема алгоритма вычисления суммы элементов массива

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

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

2. Разработка формы – рисунок 6.3, таблица 6.1.

//Пример удален, надо добавить

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

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

Задачи первого уровня сложности

1. Дана вещественная матрица размером 4 строки, 5 столбцов. Переставляя ее строки и столбцы, добейтесь того, чтобы наибольший элемент (один из них) оказался в верхнем левом углу.

2. Определите, является ли заданная целочисленная квадратная матрица порядка 5симметричной относительно главной диагонали.

3. Дана вещественная матрица размером 4 строки, 5 столбцов. Поменяйте местами максимальный и минимальный элементы матрицы.

4. Дана целочисленная квадратная матрица порядка 5. Найдите максимальный элемент среди элементов, лежащих ниже главной диагонали, и максимальный элемент среди элементов, лежащих выше главной диагонали, поменяйте их местами.

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

6. Среди строк целочисленной квадратной матрицы порядка 5 найдите строку с минимальной суммой элементов.

7. Дана целочисленная квадратная матрица порядка 5. Найдите минимальный элемент среди элементов, лежащих ниже главной диагонали, и максимальный элемент среди элементов, лежащих выше главной диагонали, вычислите их среднее арифметическое.

8. Дана целочисленная квадратная матрица порядка 5. Найдите минимальный элемент среди элементов, лежащих левее вспомогательной диагонали, и максимальный элемент среди элементов, лежащих правее вспомогательной диагонали, и вычислить их среднее геометрическое.

9. Среди столбцов целочисленной квадратной матрицы порядка 5 найдите столбец с максимальной суммой элементов.

10. Среди тех столбцов целочисленной матрицы размером 3 строки, 5 столбцов, которые содержат только такие элементы, значения которых по модулю не превышают 10, найдите столбец с минимальным произведением элементов.

11. Даны целые числа а1,...,а10, целочисленная квадратная матрица порядка 5. Замените нулями в матрице те элементы, для которых имеются равные числа среди а1,...,а10.

12. В двумерном целочисленном массиве размером 4 строки, 5 столбцов поменяйте местами строки, симметричные относительно середины массива (горизонтальной линии).

13. В двумерном целочисленном массиве размером 4 строки, 5 столбцов поменяйте местами столбцы, симметричные относительно середины массива (вертикальной линии).

14. Даны две вещественные квадратные матрицы порядка 4. Получите новую матрицу прибавлением к элементам каждого столбца первой матрицы минимального элемента соответствующего столбца второй матрицы.

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

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

17. Дана вещественная матрица размером 4 строки, 5 столбцов. Получите новую матрицу путем вычитания из всех элементов данной матрицы наименьшего по модулю элемента.

18. Дана целочисленная квадратная матрица порядка4. Най-дите в каждой строке наибольший элемент и поменяйте его местами с элементом, расположенным на главной диагонали.

19. Дана целочисленная квадратная матрица порядка 5. Найдите в каждой строке наименьший элемент и поменяйте его местами с элементом, расположенным на вспомогательной диагонали.

20. Дана вещественная матрица размером 4 строки, 5 столбцов. Определите числа b1,..,b4, равные значениям средних арифметических элементов строк.

21. Дана вещественная матрица размером 4 строки, 5 столбцов. Определите числа b1,..,b5, равные значениям средних арифметических элементов столбцов.

22. Дана вещественная матрица размером 4 строки, 5 столбцов. Определите числа b1,..,b5, равные среднему арифметическому значению максимального и минимального элементов каждого столбца.

23. В данной вещественной квадратной матрице порядка 5найдите сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

24. В данной вещественной квадратной матрице порядка 5найдите среднее геометрическое положительных элементов столбца, в котором расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.

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

26. Дана целочисленная квадратная матрица порядка4. Ниже главной диагонали найдите минимальный элемент среди четных элементов, а выше главной диагонали - среди нечетных элементов.

27. Дана целочисленная квадратная матрица порядка4. Ниже главной диагонали найдите минимальный элемент среди положительных элементов, а выше главной диагонали – максимальный элемент среди отрицательных элементов.

28. Дана целочисленная квадратная матрица порядка5. Левее вспомогательной диагонали найдите минимальный элемент среди четных элементов, а правее вспомогательной диагонали - среди нечетных элементов.

29. Дана целочисленная квадратная матрица порядка5. Левее вспомогательной диагонали найдите минимальный элемент среди положительных элементов, а правее вспомогательной диагонали – максимальный элемент среди отрицательных элементов.

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

Задачи второго уровня сложности

1. Дана вещественная матрица размером n строк, m столбцов. Упорядочьте ее строки по возрастанию их первых элементов.

2. Дана вещественная матрица размером n строк, m столбцов. Упорядочьте ее строки по возрастанию значений элементов.

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

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

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

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

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

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

9. Дана целочисленная матрица размером n строк, m столбцов. Для каждого столбца найдите произведение элементов, значения которых лежат в диапазоне [1, 10], упорядочьте столбцы матрицы по убыванию произведений.

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

11. Дана вещественная матрица размером n строк, m столбцов. Упорядочьте ее столбцы по возрастанию их первых элементов.

12. Дана целочисленная матрица размером n строк, m столбцов. Найдите и выведите строку, в которой длина максимальной серии одинаковых элементов максимальна.

13. Дана целочисленная матрица размером n строк, m столбцов. Найдите и выведите столбец, в котором длина максимальной серии возрастающих по значению элементов максимальна.

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

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

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

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

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

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

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

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

22. Дана целочисленная матрица размером n строк, m столбцов. Найдите столбец, сумма элементов которого минимальна, и упорядочьте этот столбец матрицы по убыванию значений элементов.

23. Дана целочисленная матрица размером n строк, m столбцов. Найдите строку, сумма элементов которой максимальна, и упорядочьте эту строку матрицы по убыванию значений элементов.

24. Дана целочисленная матрица размером n строк, m столбцов. Найдите строку, среднее арифметическое элементов которой максимально, и упорядочьте эту строку матрицы по возрастанию значений элементов.

25. Дана целочисленная матрица размером n строк, m столбцов. Найдите столбец, среднее арифметическое элементов которого максимально, и упорядочьте этот столбец матрицы по возрастанию значений элементов.

26. Дана целочисленная матрица размером n строк, m столбцов. Найдите строку, среднее геометрическое элементов которой максимально, и упорядочьте эту строку матрицы по убыванию значений элементов.

27. Дана целочисленная матрица размером n строк, m столбцов. Найдите столбец, среднее геометрическое элементов которого минимально, и упорядочьте этот столбец матрицы по убыванию значений элементов.

28. Дана целочисленная матрица размером n строк, m столбцов. Найдите строку, произведение элементов которой максимально, и упорядочьте эту строку матрицы по убыванию значений элементов.

29. Дана целочисленная матрица размером n строк, m столбцов. Найдите столбец, произведение элементов которого минимально, и упорядочьте этот столбец матрицы по убыванию значений элементов.

30. Дана целочисленная матрица размером n строк, m столбцов. Найдите строку, количество различных элементов в которой максимально, и упорядочьте эту строку матрицы по возрастанию значений элементов.


Контрольные вопросы к главе 6

1. Напишите фрагмент программы ввода двумерного целочисленного массива, в котором 5 строк и 10 столбцов.

2. Напишите фрагмент программы вывода двумерного вещественного массива, в котором 5 строк и 6 столбцов.

3. Дайте описание трехмерного целочисленного массива.

4. Дайте описание четырехмерного целочисленного массива.

7. Введите квадратную вещественную матрицу 4-го порядка, элементы которой заданы построчно, и распечатайте ее по столбцам.

8. Присвойте нулевые значения всем элементам массива:

float a[5, 4];

9. Для чего предназначается компонент DataGridView?

10. Какими основными свойствами обладает компонент DataGridView?



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-16 Нарушение авторских прав и Нарушение персональных данных


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