Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Foreach (тип идентификатор in контейнер) оператор




Цикл работает в полном соответствии со своим названием - тело цикла выполняется для каждого элемента в контейнере. Тип идентификатора должен быть согласован с типом элементов, хранящихся в контейнере данных. Предполагается также, что элементы контейнера (массива, коллекции) упорядочены. На каждом шаге цикла идентификатор, задающий текущий элемент контейнера, получает значение очередного элемента в соответствии с порядком, установленным на элементах контейнера. С этим текущим элементом и выполняется тело цикла - выполняется столько раз, сколько элементов находится в контейнере. Цикл заканчивается, когда полностью перебраны все элементы контейнера. Серьезным недостатком циклов foreach в языке C# является то, что цикл работает только на чтение, но не на запись элементов. Так что наполнять контейнер элементами приходится с помощью других операторов цикла.

В приведенном ниже примере показана работа с трехмерным массивом. Массив создается с использованием циклов типа for, а при нахождении суммы его элементов, минимального и максимального значения используется цикл foreach:

/// <summary>

/// Демонстрация цикла foreach.

/// Вычисление суммы, максимального и минимального элементов

/// трехмерного массива, заполненного случайными числами.

/// </summary>

public void SumMinMax() {

int[,,] arr3d = new int[10,10,10];

Random rnd = new Random();

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

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

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

arr3d[i, j, k] = rnd.Next(100);

long sum = 0;

int min = arr3d[0, 0, 0], max = arr3d[0, 0, 0];

foreach (int item in arr3d) {

sum += item;

if (item > max) max = item;

else if (item < min) min = item;

}

Console.WriteLine("sum = {0}, min = {1}, max = {2}", sum, min, max);

} //SumMinMax

Практическая часть

Задание

1. Изучить теоретическую часть.

2. Получить вариант задания.

3. Выполнить вычисления заданного выражения на компьютере, осуществляя все шаги «Решения задач на компьютере», описанные в теоретической части.

4. Оформить отчет в электронном виде.

5. Защитить лабораторную работу, ответив на вопросы преподавателя.

Варианты

1. Подсчитать число и сумму положительных, число и произведение отрицательных элементов заданного пользователем массива A(N).

 

2. Сжать заданный массив A(N) отбрасыванием нулевых элементов.

 

3. Элементы заданного массива B(N) переписать в новый массив A(N) в обратном порядке. Массив задается пользователем.

 

4. У кассы выстроилась очередь из N человек. Время обслуживания кассиром i-го клиента равно Ti (i = 1,..., N).

а) Определите время пребывания в очереди каждого клиента;

б) Укажите номер клиента, для обслуживания которого кассиру потребовалось больше всего время.

 

5. В заданном массиве Х(N) заменить нулями все отрицательные компоненты, непосредственно предшествующие его максимальной компоненте (первой по порядку, если их несколько).

 

6. Вычислить значения

а) sin x + sin2x +... + sinnx;

б) sin x + sin x2 +... + sin xn;

в) sin x + sin2x2 +... + sinnxn;

г) sin x + sin sin x +... + sin sin...sin x (n раз).

 

7. Вычислить сумму квадратов всех элементов заданного массива X(N), за исключением элементов, кратных пяти.

 

8. Вычислить значения функции z = (a + b + ci) / i, если a изменяется от 0 с шагом 1, b изменяется от 5 с шагом 1, ci является элементом массива C(N). При этом a и b изменяются одновременно с i.

 

9. В заданном массиве A(N) поменять местами наибольший и наименьший элементы.

 

10. В заданном массиве A(N) определить количество элементов, которые меньше заданного значения.

 

11. Осуществить циклический сдвиг компонент заданного вектора A(N) влево на одну позицию, то есть получите вектор А = (a2, a3,..., aN, a1).

 

12. Осуществите циклический сдвиг компонент заданного вектора A(N) вправо на две позиции, т. е. получить вектор A = (aN-1, aN, a1, a2,..., aN-2).

 

13. Дан массив A(N). Получить массив B(N), i-й элемент которого равен среднему арифметическому первых i элементов массива А: bi = (a1 + a2 +... + ai) / i.

 

14. Для заданного набора коэффициентов a, b, c, d найти наименьшее значение функции y = a x3 + b x2 + cx + d и значение аргумента, при котором оно получено. Значение х изменяется от 0 до 2 с шагом 0,2.

 

15. Записать подряд в массив A(N) элементы заданного массива В(2N), стоящие на чётных местах, а элементы, стоящие на нечетных местах, – в массив С(N).

 

16. Выведите на печать номера элементов заданного массива Y(N), удовлетворяющих условию 0 < yi < 1.

 

17. Дан массив A(2N). Построить массивы с элементами, соответственно равными:

а) a1, aN+1, a2, aN+2,..., aN, a2N;

б) a2N, a1, a2N-1, a2,..., aN+1, aN..

 

18. В заданном массиве A(N) заменить наибольший элемент массива элементом a1, наименьший элемент массива — aN.

 

19. В заданном массиве A(N), все элементы которого попарно различны, найти:

а) наибольший элемент из отрицательных;

б) наименьший элемент из положительных;

в) второй по величине элемент.

 

20. В заданном массиве A(N) определить число соседств:

а) двух положительных чисел;

б) двух чисел разного знака;

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

г) чётного числа и нечётного c нечётным индексом.

 

21. В заданном массиве A(N) положительные элементы уменьшить вдвое, а отрицательные заменить на значения их индексов.

 

22. В заданном массиве A(N) вычислить среднее геометрическое и среднее арифметическое значения для положительных элементов.

 

23. Элементы заданного массива X = (x1, x2,...,xN) переупорядочить следующим образом: X = (xN, xN-1,..., x1).

 

24. Образовать массив B, состоящий из положительных элементов заданного массива A(N), больших пяти. Выведите на печать образованный массив и число его элементов.

 

25. Из заданных векторов X(N) и Y(N) получить вектор Z(2N) c элементами (x1, y1, x2, y2,..., xN, yN).





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


Дата добавления: 2016-12-18; Мы поможем в написании ваших работ!; просмотров: 389 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

2261 - | 2185 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.131 с.