ТОП 10:

Тема 3. Реализация циклических алгоритмов



Теоретический материал

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

Выделяют следующие виды циклов:

- цикл с параметром;

- цикл с предусловием (цикл пока);

- цикл с постусловием (цикл до).

Рассмотрим способы задания каждого вида циклов в С#.

Цикл с параметром (for)

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

for (int i = <начальная граница интервала>; i <= <конечная граница интервала>; i++)

{

<Операторы>;

 

}

Цикл с предусловием

Оператор while выполняет оператор или блок операторов, пока условие не примет ложное значение.

while (условие)

{

<операторы>;

}

Цикл с постусловием

Оператор do повторно выполняет оператор или блок операторов, пока определенное выражение не примет ложное значение. Тело цикла должно быть заключено в фигурные скобки, {}, если оно не состоит из одной инструкции. В этом случае фигурные скобки необязательны.

do

{

<операторы>;

} while (условие);

Цикл foreach

Цикл foreach служит для циклического обращения к элементам, представляющим собой группу объектов. Ниже приведена общая форма оператора цикла foreach:

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

оператор;

 

Практические задачи

1. Вычислить сумму четных чисел от 1 до 100. Код программы представлен на рисунке 20, а результат выполнения программы на рисунке 21.

Рисунок 20. Алгоритм решения задачи  
Рисунок 21. Результат выполнения программы

 

2. Вычислить n!(рис. 22, 23).

Примечание:n! – факториал числа n, то есть произведение всех натуральных чисел от 1 до n.

Рисунок 22. Алгоритм решения задачи   Рисунок 23. Результат выполнения программы

 

3. Вычислить значение суммы членов бесконечного ряда (рис. 24, 25).

при x = 0.1 с точностью до члена ряда с модулем, меньшим E= 0.00001.

 
Рисунок 24. Алгоритм решения задачи  

Рисунок 25. Код выполнения программы

4. Вычислить сумму чисел от -10 до 10 с шагом 0,2 (рис. 26, 27).

Рисунок 26. Алгоритм решения задачи

Рисунок 27. Результат выполнения программы

5. В первый день легкоатлет пробегает расстояние равное 1000 м. Каждый последующий день расстояние, пробегаемое спортсменом увеличивается на 10%. К какому дню легкоатлет пробежит суммарное расстояние не менее 10000 м. (рис. 28, 29).

Рисунок 28. Алгоритм решения задачи

Рисунок 29. Результат выполнения программы

6. Вычислять сумму чисел, вводимых с клавиатуры до тех пор, пока не будет введен ноль (рис. 30, 31).

  Рисунок 30. Код программы  

Рисунок 31. Результат выполнения программы

Вопросы для контроля знаний

1. В каких случаях применяется алгоритмическая конструкция «цикл»?

2. В каких случаях применяется цикл с параметром?

3. Каким образом задается цикл с параметром?

4. В каких случаях применяется цикл с предусловием?

5. Каким образом задается цикл с предусловием?

6. В каких случаях используется цикл с постусловием?

7. Каким образом задается цикл с постусловием?

Задачи для самостоятельной работы

1. Вывести кубы чисел от 1 до 10.

2. Составить программу вычисления значения выражения y=1+1/2+1/3+... +1/20.

3. Составить таблицу значений функции у = sin х отрезке [0;3.14] с шагом 0,1.

4. Сумма S рублей положена в сбербанк, при этом ежегодный прирост составляет Р% и считается непрерывным. Определить, через сколько лет первоначальная сумма увеличится в N раз

5. Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину.

6. В 1993 году численность населения города составляла 50000 человек. Вывести в виде таблицы значение численности населения города вплоть до 2016 года, при условии, что ежегодный прирост населения составлял 5%.

Контрольная работа №1

Вариант 1

1) Даны целые числа a, b, c. Если a ≤ b ≤ c, то все числа заменить их квадратами.

2) Найти произведение чисел от 1 до 10 с шагом 0,5.

3) Пользователь вводит числа a и b. Написать калькулятор, который вычисляет сумму, разность и произведение данных чисел.

Вариант 2

1) Создать форму для нахождения площади треугольника, квадрата и прямоугольника.

2) Найти произведение четных чисел от 20 до 30.

3) Перевести n радиан в градусы.

Вариант 3

1) С помощью оператора варианта решите следующую задачу. Пользователь вводит символ и ему выдается сообщение: «это русская буква», «это английская буква».

2) Найти количество четных чисел в диапазоне от 0 до 40.

3) Найти площадь ромба, если известны длина стороны и угол между ними.

Вариант 4

1) Требуется написать программу, определяющую по координатам точки, в какой четверти она находится.

2) Найти сумму

3) Найти площадь треугольника по формуле Герона, если известны длины трех его сторон.

Вариант 5

1) Дана прямоугольная (декартова) система координат, в которой две перпендикулярные оси делят плоскость на четверти. В первую четверть попадают точки, у которых обе координаты (x и y) больше нуля. Во вторую: x < 0, y > 0; третью: x < 0, y < 0; четвертую: x > 0, y < 0.

2) Найти сумму

3) Найти остаток от деления на 10 числа, введенного пользователем с клавиатуры.

Вариант 6

1) Имеется прямоугольник со сторонами a и b. Определить попадает ли туда точки с координатами x1 , у1 и x2, y2 соответственно.

2) Найти сумму

3) Найти сумму четных чисел четырехзначного числа.

Вариант 7

1) Создать форму для нахождения длины гипотенузы прямоугольного треугольника и для расчета его площади.

2) В диапазоне от 0 до 10 вывести все числа кратные 3.

3) Выделить первую и третью цифру в трехзначном числе.

Вариант 8

1) Создать калькулятор для перевода величины угла из радиан в градусы и для расчета синуса, косинуса и тангенса угла.

2) Найти сумму n2+(n+1)2+(n+2)2+(n+3)2+…..+(n+n)2

3) Перевести n рублей в евро, Йены и кроны соответственно курсу на сегодняшний день.

Вариант 9

1) По коду города вывести его название (например 3433 - Екатеринбург).

2) Найти сумму натуральных четных чисел от 0 до n.

3) Вычислить площадь круга, если известен его диаметр.

Вариант 10

1) Найти значение выражения

2) Найти сумму n натуральных чисел, вводимых с клавиатуры.

3) Выделить каждую цифру в двухзначном числе. Число вводится с клавиатуры.

Вариант 11

1) Определите, можно ли по трем сторонам построить треугольник.

2) Вывести значения квадратного корня n натуральных чисел, вводимых с клавиатуры.

3) Найти значение выражения y(x)=sin(x)+cos(x)-10. Значение x вводится с клавиатуры.

Вариант12

1) Найдите максимальное из четырех чисел.

2) Вывести таблицу кубов n натуральных чисел.

3) Найти площадь треугольника, если известны длины двух его сторон и угол между ними.

Тема 4. Одномерные массивы

Теоретический материал

Массив – это множество значений, которыми можно оперировать как группой. Каждый элемент или значение в массиве является отдельной переменной. С ней можно обращаться, как с обычной переменной, но так как эти переменные собраны в массив, их также можно трактовать как общность.

Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива).

Порядковый номер элемента массива 0 1 2 3 4
Элемент массива 1 2 15 -7 8

Число индексов характеризует размерность массива. Каждый индекс изменяется в некотором диапазоне [a,b]. В рассматриваемом примере - диапазон [0,4]. Диапазон [a,b] называется граничной парой, a – нижней границей, b – верхней границей индекса. Границы массива в С# строго соблюдаются. Если границы массива не достигаются или же превышаются, то возникает ошибка при выполнении.

В языке C#, как и во многих других языках, индексы задаются целочисленным типом. При объявлении массива границы задаются выражениями. Если все границы заданы константными выражениями, то число элементов массива известно в момент его объявления и ему может быть выделена память еще на этапе трансляции. Такие массивы называются статическими. Если же выражения, задающие границы, зависят от переменных, то такие массивы называются динамическими, поскольку память им может быть отведена только динамически в процессе выполнения программы, когда становятся известными значения соответствующих переменных. Массиву, как правило, выделяется непрерывная область памяти.

Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент.

Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным. Количество индексов элементов массива определяет размерность массива. По этом признаку массивы делятся на одномерные (линейные), двумерные, трёхмерные и т.д.

В С# массивы реализованы в виде объектов, следовательно, необходимо объявить переменную, которая может обращаться к массиву. Затем нужно создать экземпляр массива, используя оператор new. Так, для объявления одномерного массива обычно применяется следующая общая форма:

тип[] имя_массива = new типэлементов[размер]

Тип определяет тип составляющих элементов массив, размер определяет число элементов массива.

Например:

int[] А = new int[10];

 

В данном случае создаем массив типа int, который составляется из десяти элементов и связывается с переменной ссылки на массив, именуемой А. В ней хранится ссылка на область памяти, выделяемой для массива оператором new. Эта область памяти должна быть достаточно большой, чтобы в ней могли храниться десять элементов массива типа int.

Второй способ задания массива:

double[] В = {1, 2, 5, 1.36, 4.5};

В этом случае задается массив В из пяти вещественных чисел.

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

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

Над элементами массивами чаще всего выполняются такие действия, как

1) поиск значений;

2) сортировка элементов в порядке возрастания или убывания;

3) подсчет элементов в массиве, удовлетворяющих заданному условию.

Сумму элементов массива можно подсчитать по формуле S=S+A[i] первоначально задав S=0.

Количество элементов массива можно подсчитать по формуле К=К+1, первоначально задав К=0.

Произведение элементов массива можно подсчитать по формуле , первоначально задав P = 1.

Практические задачи

1. Задать массив из n элементов. Пользователь вводит элементы с клавиатуры (рис. 32-36).

Рисунок 32. Ввод элементов массива с клавиатуры и вывод их на экран

 

Найти сумму, произведение и количество четных элементов массива

Рисунок 33. Нахождение суммы, произведения и количества

 

Найти максимальный элемент массива

Рисунок 34. Поиск максимума

 

Заменить все элементы в диапазоне от 5 до 8 на ноль и вывести новый массив.

Рисунок 35. Замена элементов

Рисунок 36. Результат работы программы

 

2. Задать массив случайных чисел из 10 элементов в диапазоне от 0 до 10 (рис. 37-39).

 

Рисунок 37. Двумерный массив. Ввод и вывод элементов

 

Сформировать из него новый массив, элементы которого кратны 3.

Рисунок 38. Создание нового массива

 

Рисунок 39. Результат выполнения программы

 

3. Задать массив и найти сумму пяти элементов массива. Для решения данной задачи воспользоваться командами break и foreach (рис. 40-41).

 

Рисунок 40. Использование команд break, foreach

 

Рисунок 41. Результат выполнения программы

Вопросы для контроля знаний

1. Что такое массив? Чем одномерный массив отличается от двумерного?

2. Какие операции можно выполнять над элементами массива. Приведите примеры.

3. В чем особенность массивов в С#?

4. Что такое размерность массива?

5. Как найти сумму и произведение элементов массива?

6. В чем различие между статическими и динамическими массивами?

7. Какие преимущества в C# дает представление массива виде объектов?

Задачи для самостоятельного решения

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

2. Дан целочисленный массив с количеством элементов n. «Сожмите» массив, выбросив из него каждый второй элемент.

3. Задан массив с количеством элементов N. Сформируйте два массива: в первый включите элементы исходного массива с чётными номерами, а во второй – с нечётными.

4. В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования.

5. Найти сумму максимального и минимального элементов массива. Элементы заданы случайным образом.

6. Найти среднее арифметическое четных элементов массива.

7.Задать массив случайных чисел. Найти количество элементов больше 5, но меньше 10.

Тема 5. Двумерные массивы

Теоретический материал

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

В следующей строке кода объявляется двумерный массив integer размерами 10×20.

int[,] a = new int[10, 20];

Обратите особое внимание на объявление этого массива. Как видите, обе его разме­рности разделяются запятой. В первой части этого объявления синтаксическое обозначение

[,]

означает, что создается двумерный массив.

Для доступа к элементу двумерного массива следует указать оба индекса, разделив их запятой. Например, в следующей строке кода элементу массива a, находящемуся на пересечении 3 строки и 5 столбца, присваивается значение 10.

a[3, 5] = 10;

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

Для главной диагонали выполняется следующее соотношение:

i = j

Рисунок 42. Главная диагональ

 

Для побочной диагонали выполняется следующее соотношение:

i = n – j +1

Рисунок 43. Побочная диагональ

n – размерность массива;

i, j – индексы элементов массива по строкам и столбцам соответственно.

Практические задания

1. Задать массив размером M*N. Вывести элементы массива на экран. Посчитать количество отрицательных элементов. Вычислить сумму элементов выше главной диагонали (рис. 44-47).

Рисунок 44. Работа с двумерным массивом

Рисунок 45. Вычисление количества отрицательных элементов

Рисунок 46. Вычисление суммы элементов выше главной диагонали

 

Рисунок 47. Результат выполнения программы

2. Заполните и выведите двумерный массив 8 ´ 8 так, чтобы получилась шахматная доска. Белые клетки заполните «0», а черные — «1» (рис. 48-49).

 

Рисунок 48. Алгоритм решения задачи

Рисунок 49. Результат выполнения программы

Вопросы для контроля знаний

1. Что такое двумерный массив? Приведите примеры применения двумерных массивов в жизнедеятельности человека.

2. Какие операции можно выполнять с элементами двумерного массива?

3. Что такое размерность двумерного массива?

4. Как задается двумерный массив в программе?

Задачи для самостоятельного решения

1. Задать матрицу размером 5*5. Элементы вводить с клавиатуры. Для данной матрицы посчитать произведение отрицательных элементов, среднее арифметическое, элементов, лежащих ниже побочной диагонали, четные элементы главной диагонали заменить нулями и вывести итоговую матрицу.

2. Сгенерировать матрицу случайных чисел размером m*n. Посчитать количество элементов, значения которых лежат в диапазоне от 5 до 10, вычислить произведение отрицательных элементов, элементы, лежащие на главной и побочной диагонали единицами.

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

 

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

 

Тема 6. Сортировка массивов

Теоретическая часть

Сортировкойили упорядочениеммассива называется расположение его элементов по возрастанию (или убыванию).

Алгоритм сортировки — это алгоритм для упорядочения элементов в списке.

Рассмотрим основные методы сортировки массивов.

Сортировка пузырьком

Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает – массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим «наибольшим элементом», а наименьший элемент перемещается на одну позицию к началу массива.

Сортировка вставками

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

Сортировка выбором

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

Сортировка слиянием

Для решения задачи сортировки эти три этапа выглядят так: 1) Сортируемый массив разбивается на две части примерно одинакового размера; 2) Каждая из получившихся частей сортируется отдельно, например — тем же самым алгоритмом; 3) Два упорядоченных массива половинного размера соединяются в один. 1.1. - 2.1. Рекурсивное разбиение задачи на меньшие происходит до тех пор, пока размер массива не достигнет единицы (любой массив длины 1 можно считать упорядоченным). 3.1. Соединение двух упорядоченных массивов в один. Основную идею слияния двух отсортированных массивов можно объяснить на следующем примере. Пусть мы имеем два подмассива. Пусть также, элементы подмассивов в каждом из этих подмассивов отсортированы по возрастанию. Тогда: 3.2. Слияние двух подмассивов в третий результирующий массив. На каждом шаге мы берём меньший из двух первых элементов подмассивов и записываем его в результирующий массив. Счетчики номеров элементов результирующего массива и подмассива из которого был взят элемент увеличиваем на 1.3. «Прицепление» остатка. Когда один из подмассивов закончился, мы добавляем все оставшиеся элементы второго подмассива в результирующий массив.

Быстрая сортировка

Быстрая сортировка использует стратегию «разделяй и властвуй». Шаги алгоритма таковы:

7. Выбираем в массиве некоторый элемент, который будем называть опорным элементом. С точки зрения корректности алгоритма выбор опорного элемента безразличен. С точки зрения повышения эффективности алгоритма выбираться должна медиана, но без дополнительных сведений о сортируемых данных её обычно невозможно получить. Известные стратегии: выбирать постоянно один и тот же элемент, например, средний или последний по положению; выбирать элемент со случайно выбранным индексом.

8. Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы со значением меньшим или равным опорному элементу, оказались слева от него, а все элементы, превышающие по значению опорный — справа от него. Обычный алгоритм операции:

a. Два индекса — l и r, приравниваются к минимальному и максимальному индексу разделяемого массива, соответственно.

b. Вычисляется индекс опорного элемента m.

c. Индекс l последовательно увеличивается до тех пор, пока l-й элемент не окажется больше либо равен опорному.

d. Индекс r последовательно уменьшается до тех пор, пока r-й элемент не окажется меньше либо равен опорному.

e. Если r = l — найдена середина массива — операция разделения закончена, оба индекса указывают на опорный элемент.

f. Если l < r — найденную пару элементов нужно обменять местами и продолжить операцию разделения с тех значений l и r, которые были достигнуты. Следует учесть, что если какая-либо граница (l или r) дошла до опорного элемента, то при обмене значение m изменяется на r-й или l-й элемент соответственно, изменяется именно индекс опорного элемента и алгоритм продолжает свое выполнение.

9. Рекурсивно упорядочиваем подмассивы, лежащие слева и справа от опорного элемента.

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

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

 

Практические задания

1. Ввести массив из n элементов. Отсортировать по убыванию методом «Пузырька» (рис. 50, 51).

Рисунок 50. Метод «пузырька»

 

Рисунок 51. Алгоритм выполнения программы

 

Для того, чтобы отсортировать одномерный массив по убыванию необходимо в программном коде знак «>» заменить на знак «<».

2. Ввести массив размером m*n. Отсортировать по столбцам по возрастанию (рис. 52-53).

Рисунок 52. Сортировка элементов массива по столбцам

 

Рисунок 53. Результат выполнения программы

Для того, чтобы отсортировать двумерный массив по столбцам по убыванию необходимо в программном коде знак «>» заменить на знак «<». Для того, чтобы отсортировать массив по строкам, необходимо организовать с помощью вложенного цикла по переменной k перебор по переменной j (по номеру столбца), а не по переменной i (номеру строки) как в рассмотренном примере.

Вопросы для контроля знаний

1. Что такое сортировка массива?

2. Что такое алгоритм сортировки?

3. Какие алгоритмы сортировки вы знаете?

4. В чем суть каждого из алгоритмов сортировки?

Задания для самостоятельной работы

1. Ввести одномерный массив из 10 элементов. Отсортировать данный массив по возрастанию и убыванию любым из методов, кроме рассмотренного в лабораторной работе алгоритма методом «пузырька».

2. Ввести двумерный массив 5*5. Отсортировать данный массив по столбцам и по строкам, по возрастанию и убыванию любым из методов, кроме рассмотренного в лабораторной работе алгоритма методом «пузырька».

3. Ввести двумерный массив размером m*n. Отсортировать его элементы по возрастанию. Например для введенного массива:

результат будет выглядеть следующим образом:

 

 

Контрольная работа №2

Вариант 1

1) Задать двумерный массив 4*5. Найти сумму элементов по столбцам.

2) Задать массив 4*4. Найти сумму элементов по строкам.

3) Задать массив случайных чисел 5*5. Сформировать из него одномерный массив, состоящий из четных элементов. Отсортировать новый одномерный массив по возрастанию

Вариант 2

1) Задать массив из 10 элементов. Вывести четные элементы.

2) Задать массив из n чисел. Сформировать из него массив отрицательных чисел.

3) Задать массив 4*4. Элементы вводятся с клавиатуры. Отсортировать элементы массива по строкам по возрастанию.

Вариант 3

1) Задать двумерный массив 6*6. Найти произведение элементов главной диагонали.

2) Задать массив из n чисел. Сформировать из него массив положительных чисел.

3) Сформировать массив элементов F по правилу

Отсортировать элементы массива по возрастанию

Вариант 4

1) Задать массив из n элементов. Найти произведение элементов, кратных 3.

2) Задать массив n*m. Вывести все элементы данного массива в диапазоне от 10 до 2 Подсчитать их количество.

3) Сформировать массив элементов F по правилу

Сформировать из него массив четных элементов и отсортировать его по убыванию

Вариант 5

1) Задать массив 6*6. Найти максимальный элемент, среди всех элементов главной диагонали.

2) Задать массив из m случайных чисел. Найти произведение всех элементов массива.

3) Задать массив 10*10 случайных элементов. Отсортировать элементы массива по столбцам.

Вариант 6

1) Задать массив из n элементов. Отсортировать элементы по возрастанию.

2) Задать матрицу 5*5. Найти количество элементов массива, кратных 5.

3) Задан массив из 10 элементов. Сформировать из него новый массив из элементов, кратных 3. Отсортировать новый массив по убыванию.

 

Вариант 7

1) Задан массив 5*5. Сформировать из него новый массив, состоящий из элементов, стоящих ниже главной диагонали. Отсортировать новый массив по возрастанию.

2) Задать массив из 10 случайных чисел. Найти сумму четных элементов массива.

3) Сформировать матрицу

Вариант 8

1) Задать массив из 5 элементов. Вывести элементы, кратные 4 и подсчитать их количество.

2) Задать массив n*m. Найти произведение нечетных элементов данного массива. Подсчитать количество данных элементов.

3) Задан двумерный массив 5*5. Отсортировать элементы массива по возрастанию

Вариант 9

1) Задан одномерный массив из 10 элементов. Сформировать из него массив четных элементов и отсортировать его по убыванию

2) Задать массив 3*3. Найти произведение всех элементов массива.

Сформировать из него новый массив, элементы которого кратны 5 (0 не включаем).

3) Задать матрицу 5*5. Найти сумму всех элементов массива.

Вариант 10

1) Задан массив случайных чисел из 20 элементов в диапазоне от 10 до 50.

2) Задать массив из 20 случайных чисел. Сформировать из него новый массив, который состоит из четных элементов.

3) Задан двумерный массив 10*10. Сформировать из него одномерный массив из элементов, стоящих на главной диагонали. Отсортировать новый массив по убыванию.

Вариант 11

1) Задать массив из 20 случайных чисел. Сформировать из него новый массив, который состоит из элементов, больше 10.

2) Задать массив 6*6. Вывести все четные элементы данного массива. Подсчитать их количество.

3) Задать массив из 7 чисел. Отсортировать элементы массива по убыванию.

Вариант 12

1) Задать массив случайных чисел n*m. Найти сумму минимального и максимального элементов данного массива.

2) Задать массив 3*3. Найти сумму элементов, выше главной диагонали.

3) Задан массив из 7 элементов. Сформировать из него новый массив, который состоит из чисел, стоящих на четных позициях. Отсортировать новый массив по возрастанию.

 

Тема 7. Структуры

Теоретический материал

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

struct имя_структуры

{

// объявления членов

}

где имя обозначает имя структуры, а внутри операторных скобок объявлены члены: методы, поля, индексаторы, свойства, события (рис. 54).

 

 

Рисунок 54. Объявление структуры в С#

 

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

Описание структуры подразумевает создание нового типа данных. При этом структуры подходят для создания несложных типов (точка, цвет, окружность). Если необходимо создать множество экземпляров подобного типа, используя структуры, мы экономим память, которая могла бы выделяться под ссылки в случае с классами. Примерами структур в стандартной библиотеке классов .Net являются такие типы как int, float, double, bool.

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

 

Практические задачи

1. Ввести данные о сотруднике компании «Орион»: фамилию, имя, отчество, название отдела в котором он работает и его оклад (рис. 55-56).

Рисунок 55. Задание структуры

 

Рисунок 56. Результат выполнения программы

 

2. Ввести информацию о двух сотрудниках. Подсчитать количество сотрудников с окладом, равным минимальному размеру оплаты труда (рис. 57-58).

Рисунок 57. Подсчет количества сотрудников

 

Рисунок 58. Результат выполнения программы

 

3. Внести изменение в условие задачи 1. Известно, что информация вводится о n сотрудниках (рис. 59-64).

Рисунок 59. Ввод информации о сотрудниках

Вывести всех сотрудников, которые работают в отделе снабжения

Рисунок 60. Вывод сотрудников

Вывести ФИО сотрудника с максимальным размером оклада

Рисунок 61. Вывод сотрудника с максимальным размером оклада

Отсортировать сотрудников по размеру оклада

Рисунок 62. Сортировка сотрудников

Найти средний оклад для всех работников.

Рисунок 63. Вывод среднего оклада сотрудников

 

Результат выполнения программы представлен на рисунке ниже.

Рисунок 64. Результат выполнения программы

 

Вопросы для контроля знаний

1. Как задается структура в С#?

2. В чем преимущества использования структур в С#?

3. Что может содержать структура?







Последнее изменение этой страницы: 2017-01-26; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.172.216.157 (0.053 с.)