Теория
-
Массивы в Visual C# имеют следующие функции:
- Каждый элемент в массиве содержит значение.
- Первым элементом в массиве является элемент с индексом 0.
- Размер массива — это общее количество элементов, которые он может содержать.
- Массивы могут быть одномерными и многомерными.
Примеры использования массивов:
В следующем примере кода показано, как создать одномерный массив целых чисел с элементами от 0 до 9:
int[] arrayName = new int[10]; |
Создание и одновременно инициализация массива:
int[] b = { 1, 2, 3, 4, 5 }; |
В следующем примере кода используется индекс для доступа к элементу с индексом 2:
int[] oldNumbers = { 1, 2, 3, 4, 5 }; int number = oldNumbers[2]; // 3 |
В следующем примере кода показано, как использовать цикл for
для итерации по массиву:
int[] oldNumbers = { 1, 2, 3, 4, 5 }; for (int i = 0; i < oldNumbers.Length; i++) { int number = oldNumbers[i]; ... } |
Использование цикла foreach
:
foreach (var x in oldNumbers ) Console.Write($"{x} "); |
Функция Random
Рассмотрим пример инициализации массива из пяти элементов байтового типа со случайными значениями:
1. Создайте экземпляр генератора случайных чисел, используя системное значение в качестве начального:
var rand = new Random(); |
2. Сгенерируйте и отобразите 5 случайных значений:
var bytes = new byte[5]; rand.NextBytes(bytes); Console.WriteLine("Five random byte values:"); // output: foreach (byte byteValue in bytes) Console.Write("{0, 5}", byteValue); Console.WriteLine(); |
Задания и лабораторные си шарп
Выполнить: Дан массив целых чисел (значения элементов: -1, -2, 3, 4, 5, 6, 7). Создайте функцию для вывода массива. Создайте еще одну функцию для вычисления числа нечетных элементов в этом массиве, а также числа положительных элементов в нем.
Указание 1: Создайте функцию Print
для вывода элементов массива.
Указание 2: Создайте функцию CountOddPositive
с циклом foreach
и операторами if
, чтобы проверить, является ли элемент нечетным или положительным.
Пример выполнения:
Массив: -1, -2, 3, 4, 5, 6, 7 кол-во нечетных элементов: 5, кол-во положительных 5.
[Название проекта: Lesson_7Lab1
, название файла L7Lab1.cs
]
✍ Алгоритм:
- Создайте консольное приложение с именем
Lesson_7Lab1
. - В окне Обозреватель решений (Solution Explorer) найдите файл Program.cs и переименуйте его в
L7Lab1.cs
. - Подключите класс
Console
, чтобы постоянно не писать его название при обращении к его методам: - В функции
Main()
создайте одномерный целочисленный массивa
и инициализируйте его элементы значениями: - Ниже функции
Main()
(после ее закрывающей фигурной скобки) создайте методPrint
с одним параметромarr
— целочисленный массив — который будет принимать массив из основной программы. Метод не должен ничего возвращать (void
): - Вернитесь в функцию
Main
и вызовите метод для печати элементов массива. Запустите приложение. - Можно использовать сочетание клавиш
Ctrl+M (дважды)
чтобы временно свернуть или развернуть код метода. - Сейчас необходимо создать функцию
CountOddPositive
, которая принимает массив в качестве параметра и, кроме того, имеет еще два параметра ref (параметры ввода-вывода) для передачи значений счетчиков нечетных и положительных элементов (countPos
иcountOdd
) : - Внутри метода лучше использовать цикл
foreach
для перебора и проверки элементов массива: - Ref параметр должен быть инициализирован до вызова метода. Давайте инициализируем параметр в функции
Main
: - Теперь можно вызывать созданный метод
CountOddPositive
, передав ему массив в качестве первого аргумента: - Выведите результаты:
- Запустите программу
CTRL+F5
.
... Console; ...System.
... -1, -2, 3, 4, 5, 6, 7 }; ...[] a = new [] {
static Print( [] arr) { WriteLine("Массив:"); foreach (var x in arr) Write(x + " "); WriteLine(); }
... Print(a); |
... static CountOddPositive( [] arr, ref countOdd, ref countPos) { } ...
... static void CountOddPositive( int[] arr, ref int countOdd, ref int countPos) { foreach (var x in arr) { if (x % 2 != 0) countOdd++; if (x > 0) countPos++; } } ...
... 0; countOdd = 0; ...countPos =
... CountOddPositive(a, ref countPos, ref countOdd); ...
... WriteLine($"кол-во нечетных элементов: {countOdd}, количество положительных элементов {countOdd}."); ...
To do: Дан массив вещественных чисел (значения элементов: 1.1
, -2.3
, 3.7
, 4.1
, 5.6
, 6.1
, 7.1
).
1. Создайте функцию для печати массива.
2. Создайте еще одну функцию для поиска минимального и максимального элементов массива. При этом использовать стандартные min
и max
функции запрещено.
Указание 1: Поиск максимального и минимального значения осуществлен в Лабораторной работе 4 5-го урока.
Указание 2: Создайте функцию Print
для печати элементов массива.
Указание 3: Создайте функцию FindMaxMin
с циклом foreach и оператором if для поиска максимального и минимального значения. Заголовок функции должен выглядеть следующим образом:
static void FindMaxMin(double[] arr, ref double max, ref double min) { } |
Пример выполнения:
Массив: 1.1 -2.3 3.7 4.1 5.6 6.1 7.1 максимальный элемент: 7.1, минимальный элемент: -2.3
[Название проекта: Lesson_7Task1
, название файла L7Task1.cs
]
Выполнить:
1. Создайте функцию FillRandomArray
для заполнения массива из 10 элементов случайно сгенерированными числами диапазона от -10 до 15.
2. Создайте еще одну функцию PrintArray
для вывода элементов массива.
3. Создайте функцию DivisibleBy3
для подсчета и вывода количества элементов массива, кратных 3.
Пример выполнения:
Массив: -1, -2, 3, 4, 5, 6, 7, 12, 9, 10 элементы кратные 3: 3 6 12 9 кол-во элементов кратных 3: 4
[Название проекта: Lesson_7Lab2
, название файла L7Lab2.cs
]
✍ Алгоритм:
- Создайте приложение с именем
Lesson_7Lab2
. Переименуйте файлProgram.cs
вL7Lab2.cs
. - Подключите класс
Console
: - В функции
Main()
объявите одномерный массив из 10 элементов: - Ниже функции
Main()
(после ее закрывающей фигурной скобки) создайте методFillRandomArray
с тремя параметрами:arr
параметр-массив типа int для получения массива из основной программы,minValue
параметр типа int для установления нижней границы генерируемых значений функцииRandom
, иmaxValue
параметр типа int для установления верхней границы функцииRandom
. Создаваемая пользовательская функция не должна возвращать значение (void
): - Внутри функции создайте экземпляр объекта
Random
: - Сгенерируйте значения элементов массива и выведите их, используя верхнюю и нижнюю границу диапазона (параметры
minValue
иmaxValue
) : - Вызовите метод (
FillRandomArray
) в теле функцииMain
, передав ей массив в качестве параметра, а также границы диапазона генерируемых значений: -10 и 15 : - Создайте метод
PrintArray
с одним параметром типа целочисленный массив (arr
). Метод не должен возвращать значение (void
), а должен выводить в консоль значения элементов массива: - Вызовите метод (
PrintArray
) в теле функцииMain
, передав массив в качестве аргумента: - Создайте функцию
DivisibleBy3
, которая ищет элементы, кратные 3, и выводит их. - Вызовите метод (
DivisibleBy3
) в теле функцииMain
, после вызовов двух предыдущих функций: - Запустите приложение
CTRL+F5
. - Добавьте комментарий с текстом задания и загрузите файл
.cs
в moodle систему.
... using static System.Console; ... |
... new [10]; ...[] arr =
... static FillRandomArray( [] arr, minValue = -10, maxValue = 15) { //... } ...
Random rand = new Random();
... for ( i = 0; i < arr.Length; i++) { arr[i] = rand.Next(minValue, maxValue); }
... FillRandomArray(arr, -10, 15); ...
static void PrintArray(int[] arr) { for (int i = 0; i < arr.Length; i++) { Write($"{arr[i]} "); } }
PrintArray(arr);
static DivisibleBy3( [] arr) { counter = 0; WriteLine("элементы, кратные 3:"); for ( i = 0; i < arr.Length; i++) { if (arr[i] % 3 == 0) { Write($"{arr[i]} "); counter++; } } WriteLine(); WriteLine($"кол-во элементов кратных 3: {counter}"); }
... DivisibleBy3(arr);
Выполнить: Дан целочисленный массив (15 элементов, сгенерированных случайным образом в диапазоне от 1 до 10). Требуется определить, есть ли в массиве элемент, равный N
(N
вводится). Выведите «да» или «нет» один раз. Для поиска элемента используйте цикл foreach
.
1. Для заполнения и вывода элементов массива требуется создать функцию.
2. Создайте еще одну функцию FindN
для поиска элемента, равного N
(N
— один из параметров функции).
Указание 1: Для выхода из цикла используйте оператор break
:
foreach (int x in arr) { if (...) { ... break; // выход } } |
Указание 2: Для проверки того, найден ли искомый элемент, используйте логическую переменную:
bool f = false; |
Примерный результат:
Массив: 9 5 1 3 7 7 8 1 4 4 введите искомое значение: 6 результат: нет
Дополнительное задание: Выведите также индекс найденного элемента.
[Название проекта: Lesson_7Task2
, название файла L7Task2.cs
]
Выполнить: Задан массив вещественных чисел (double
) (10 элементов, сгенерированных случайным образом в диапазоне от -5.0
до 5.0
).
1. Создайте функцию для заполнения и вывода элементов массива.
2. Создайте еще одну функцию для подсчета и печати суммы троек рядом стоящих элементов: a[1]+a[2]+a[3]
, a[2]+a[3]+a[4]
, a[3]+a[4]+a[5]
, …… , a[8]+a[9]+a[10]
.
Указание 1: Для генерации случайных вещественных чисел используйте границы:
// например, от -20 до 20: Random rand = new Random(); ... a[i]=rand.NextDouble() * 40 - 20; |
Указание 2: Для вывода вещественных значений с указанием количества цифр после десятичной точки:
// две цифры после десятичной точки Write("{0:0.00} ",arr[i] ); // например 1.21 |
Пример выполнения:
массив: -3,54 0,51 3,79 1,85 -4,11 -2,32 -1,35 -0,78 0,63 4,31 суммы троек: 0,76 6,15 1,53 -4,59 -7,79 -4,46 -1,50 4,16
[Название проекта: Lesson_7Task3
, название файла L7Task3.cs
]