Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. После ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое.
4. Вывести на экран таблицу вида:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
Массивы
Массив представляет набор однотипных переменных. Объявление массива похоже на объявление переменной: тип_переменной[] название_массива. Например,
int[] nums = new int[4];
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 5;
Console.WriteLine(nums[3]);
Здесь вначале мы объявили массив nums, который будет хранить данные типа int. Далее используя операцию new, мы выделили память для 4 элементов массива: new int[4]. Число 4 еще называется длиной массива.
Отсчет элементов массива начинается с 0, поэтому в данном случае, чтобы обратиться к четвертому элементу в массиве, нам надо использовать выражение nums[3].
И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу: nums[5] = 5;. Если мы так попытаемся сделать, то мы получим исключение IndexOutOfRangeException.
В предыдущем примере мы сначала создали массив, а потом определили для всех его элементов значения. Но есть и альтернативные пути инициализации массивов:
// эти два способа равноценны
int[] nums2 = new int[] { 1, 2, 3, 5 };
int[] nums3 = { 1, 2, 3, 5 };
Массивы бывают одномерными и многомерными. В предыдущих примерах мы создавали одномерные массивы, а теперь также создадим двухмерный:
int[] nums1 = new int[] { 0, 1, 2, 3, 4, 5 }; int[,] nums2 = { { 0, 1, 2 }, { 3, 4, 5 } }; |
Визуально оба массива можно представить следующим образом:
Одномерный массив nums1
Двухмерный массив nums2
Поскольку массив nums2 двухмерный, он представляет собой простую таблицу.
Некоторые методы и свойства массивов
- Свойство Length: позволяет получить количество элементов массива
- Свойство Rank: позволяет получить размерность массива
- Метод Array.Reverse: изменяет порядок следования элементов массива на обратный
- Метод Array.Sort: сортирует элементы массива
Примеры использования:
int[] nums1 =new int[] {8, 1, 5, 3, 4, 2}; int length = nums1.Length; Console.WriteLine("количество элементов: {0}", length); int rank = nums1.Rank; Console.WriteLine("размерность массива: {0}", rank); Array.Reverse(nums1); Array.Sort(nums1); Console.WriteLine(nums1[1]); |
Упражнения:
1. Организовать ввод-вывод элементов двумерного массива;
2. Найти количество нулей в одномерном массиве;
3. Найти количество нулей в каждой строке двумерного массива.
Дан массив из 10 элементов. Поменять местами наибольший и начальный элементы массива.
Работа с презентацией.
Методы
Много раз мы уже использовали различные методы в работе. Например, метод Convert.ToDouble(s). Результатом работы этого метода является число, которое было получено с помощью конвертации строки в число. В данном случае s – это аргумент функции. Полученное число – результат метода или возвращаемое значение. Мы с вами можем писать свои собственные методы и помещать их в свои собственные библиотеки.
Для этого обязательно нужно указать:
1. Тип результата метода;
2. Имя метода;
3. Информацию о параметрах метода;
4. Тело метода.
Синтаксис следующий:
ТипВозвращаемогоЗначения ИмяМетода(СписокФормальныхПараметров)
{
ТелоМетода;
...
return(ВозвращаемоеЗначение);
}
Для чего используют функции:
1. Если какой-то фрагмент кода встречается несколько раз, то его лучше поместить в функцию и вызывать из текста основной программы. Это упростит код.
2. Память под переменные, которые используются в функциях выделяется только в момент обращения к функции и высвобождается после завершения ее работы.
Вызов функции осуществляется из основного текста программы следующим способом:
переменная = ИмяМетода(СписокФактическихАргументов);
Как только в программе зафиксирован вызов функции, управление передается телу функции. В ходе выполнения тела функции, получаем некоторый результат, который необходимо вернуть в тело основной программы. Для этого предназначен оператор return. Оператор return говорит о том, что выполнение функции надо завершить. Оператор return может находится не только в конце функции. Тип функции и тип результата должны совпадать. Оператор return может отсутствовать совсем. Тогда функция называется процедурой и тип возвращаемого ей значения указывается void.
Пример без параметров
static void Main(string[] args)
{
string message = Hello(); // вызов первого метода
Console.WriteLine(message);
Sum(); // вызов второго метода
Console.ReadLine();
}
static string Hello()
{
return "Hell to World!";
}
static void Sum()
{
int x = 2;
int y = 3;
Console.WriteLine("{0} + {1} = {2}", x, y, x+y);
}
Пример с параметрами:
static int Sum(int x, int y)
{
return x + y;
}
static void Main(string[] args)
{
int x = 10;
int z = Sum(x, 15);
Console.WriteLine(z);
Console.ReadLine();
}
Пример с необязательными параметрами
static int OptionalParam(int x, int y, int z=5, int s=4)
{
return x + y + z + s;
}
static void Main(string[] args)
{
OptionalParam(2, 3);
OptionalParam(2,3,10);
Console.ReadLine();
}
Передача массива в функцию.
Инициализированный одномерный массив можно передать в метод. Например, следующая инструкция передает массив в метод печати.
C#
int[] theArray = { 1, 3, 5, 7, 9 }; PrintArray(theArray);В следующем примере кода показана частичная реализация метода печати.
C#
void PrintArray(int[] arr) { // Method code. }Инициализацию и передачу нового массива можно выполнить в рамках одного шага, как показано в следующем примере.
C#
PrintArray(new int[] { 1, 3, 5, 7, 9 });Пример
Описание
В следующем примере массив строк инициализируется и передается в качестве аргумента метода PrintArray. Затем метод отображает элементы этого массива. Затем вызываются методы ChangeArray и ChangeArrayElement для демонстрации того, что отправка аргумента массива по значению не запрещает вносить изменения в элементы массива.
static void PrintArray(string[] arr) { for (int i = 0; i < arr.Length; i++) { System.Console.Write(arr[i] + "{0}", i < arr.Length - 1 ? " " : ""); } System.Console.WriteLine(); } static void ChangeArray(string[] arr) { arr = (arr.Reverse()).ToArray(); System.Console.WriteLine("arr[0] is {0} in ChangeArray.", arr[0]); } static void ChangeArrayElements(string[] arr) { arr[0] = "Sat"; arr[1] = "Fri"; arr[2] = "Thu"; System.Console.WriteLine("arr[0] is {0} in ChangeArrayElements.", arr[0]); } static void Main() { string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; PrintArray(weekDays); ChangeArray(weekDays); System.Console.WriteLine("Array weekDays after the call to ChangeArray:"); PrintArray(weekDays); System.Console.WriteLine(); ChangeArrayElements(weekDays); System.Console.WriteLine("Array weekDays after the call to ChangeArrayElements:"); PrintArray(weekDays); }}