Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 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); }}

Наши рекомендации