Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

Язык программирования C#

  1. В начало
  2. Курсы
  3. Весенний семестр
  4. Магистратура
  5. Язык программирования C#
  6. Основы языка C#
  7. Лабораторная работа №3. Массивы

Лабораторная работа №3. Массивы

Требуемые условия завершения
Открыто с: четверг, 28 февраля 2019, 11:55
Срок сдачи: четверг, 28 февраля 2019, 11:55

Массивы

Массив представляет набор однотипных данных. Объявление массива похоже на объявление переменной за тем исключением, что после указания типа ставятся квадратные скобки:

тип_переменной[] название_массива;
Например, определим массив целых чисел:
int[] numbers;
После определения переменной массива мы можем присвоить ей определенное значение:
int[] nums = new int[4];
Здесь вначале мы объявили массив nums, который будет хранить данные типа int. Далее используя операцию new, мы выделили память для 4 элементов массива: new int[4]. Число 4 еще называется длиной массива. При таком определении все элементы получают значение по умолчанию, которое предусмотрено для их типа. Для типа int значение по умолчанию - 0.
Также мы сразу можем указать значения для этих элементов. Все следующие способы будут равноценны.
int[] nums2 = new int[4] { 1, 2, 3, 5 }; 
int[] nums3 = new int[] { 1, 2, 3, 5 }; 
int[] nums4 = new[] { 1, 2, 3, 5 }; 
int[] nums5 = { 1, 2, 3, 5 };
Для обращения к элементам массива используются индексы. Индекс представляет номер элемента в массиве, при этом нумерация начинается с нуля, поэтому индекс первого элемента будет равен 0. А чтобы обратиться к четвертому элементу в массиве, нам надо использовать индекс 3, к примеру: nums[3]. Используем индексы для получения и установки значений элементов массива:
int[] nums = new int[4];
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 5;
Console.WriteLine(nums[3]);  // 5
И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу:
nums[5] = 5;
Если мы так попытаемся сделать, то мы получим исключение IndexOutOfRangeException.

Перебор элементов массива

Можно использовать цикл с фиксированным числом повторений:
for (int i = 0; i < array.Length; i++)
		Console.WriteLine(array[i]);
Но лучше использовать специально предназначенный для этого оператор foreach. foreach исключает любые ошибки в индексах и выглядит понятнее.
foreach (var item in array)
		Console.WriteLine(e);
В случае присвоения элементов массива foreach не подходит.

Двумерные массивы

Двумерные массивы имеют тип int[,] (соответственно, double[,], string[,] и т.д.)
    int[,] twoDimensionalArray = new int[2, 3];
Адресация двумерных массивов также идет через запятую
   twoDimensionalArray[1,2]=1;
Перебор элементов
    for (int i = 0; i < twoDimensionalArray.GetLength(0); i++)
        for (int j = 0; j < twoDimensionalArray.GetLength(1); j++)
            twoDimensionalArray[i, j] = 10*i + j; 
Длины размерностей нужно получать через метод GetLength. Могут быть массивы и бо́льшей размерности
    int[, ,] threeDimensionalArray = new int[2, 3, 4]; 

Ступенчатые (jagged) массивы

int[][] nums = new int[3][];
nums[0] = new int[2] { 1, 2 };          // выделяем память для первого подмассива
nums[1] = new int[3] { 1, 2, 3 };       // выделяем память для второго подмассива
nums[2] = new int[5] { 1, 2, 3, 4, 5 }; // выделяем память для третьего подмассива

Задачи

  1. Создать обобщенный метод, который выводит на консоль все элементы массива с использованием разделителя. (Обратите внимание на необязательный параметр delimiter)
    static void PrintArray<T>(T[] array, string delimiter = ", ")
    
    Продемонстрировать использование метода для различных типов данных и различных значений разделителя.
    PrintArray(new int[]{1,2,3,4,5});
    PrintArray(new double[]{1.0,2.0,3.0,4.0,5.0});
    ....................................................................
    
  2. Создать метод
    static int[] RandomIntArray(int size = 10, int min = -10, int max = 10)
    
    создающий массив, заполненный случайными целыми числами в диапазоне от min до max.
    Указание 1. Создать в классе приложения объект типа Random
    static Random random = new Random();
    
    Указание 2. Для генерации случайного целого числа используем метод Next(min, max)
  3. Создать метод
    static double[] RandomDoubleArray(int size = 10, double min = 0.0, double max = 1.0)
    
    создающий массив, заполненный случайными вещественными числами в диапазоне от min до max.
    Указание Для генерации случайного числа используем метод NextDouble()
  4. Создать метод с переменным числом параметров
    static double Average(params int[] numbers)
    
    возвращающий среднее арифметическое чисел, переданных в качестве параметра. Продемонстрировать использование.
    Console.WriteLine(Average(1,2,3));
    Console.WriteLine(Average(1,2,3,4));
    Console.WriteLine(Average(1,2,3,4,5));
    
  5. Дан массив целых чисел. Написать метод, которая находит и обнуляет максимальный элемент.
  6. Дан массив целых чисел. Вычислить количество нечётных чисел в данном массиве, а также количество положительных чисел в нём. Для того, чтобы вернуть результат, используем кортеж
    private static (int odd, int positive) OddPositive(int[] array)
    
    Результат отображаем так:
    var array = RandomIntArray();
    PrintArray(array);
    var (odd, positive) = OddPositive(array);
    Console.WriteLine($"Нечётных элементов - {odd}");
    Console.WriteLine($"Положительных элементов - {positive}");
    
  7. Дан целочисленный массив размера N. Проверить, образуют ли его элементы арифметическую прогрессию. Если образуют, то вывести разность прогрессии, если нет — вывести 0.
  8. Даны два массива A и B одинакового размера. Сформировать новый массив того же размера, каждый элемент которого равен максимальному из элементов массивов A и B с тем же индексом.
  9. Дан массив целых чисел. Поменять местами его минимальный и максимальный элементы.
  10. Дан целочисленный массив. Продублировать в нем все четные числа.
◄ Домашнее задание №2
Домашнее задание №3 ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

          • Научные вычисления - 2025

          • ИАБолДанн

          • История инф

          • Data Scince и АД

          • МО (маг ИИ)

          • NLP

          • M1. Artificial Intelligence

          • CSm2Research

          • Мат. модели в МСС

          • НИС

          • Свертки

          • Язык программирования C#

            • Общее

            • Основы языка C#

              • ЗаданиеЛабораторная работа №1. Введение

              • ЗаданиеДомашнее задание №1

              • СтраницаУсловный оператор

              • СтраницаПеречисления и оператор выбора

              • СтраницаЦиклы

              • ЗаданиеЛабораторная работа №2.

              • ЗаданиеДомашнее задание №2

              • ЗаданиеЛабораторная работа №3. Массивы

              • ЗаданиеДомашнее задание №3

              • ЗаданиеЛабораторная работа №4. Последовательности.

              • ЗаданиеДомашнее задание №4

              • ФайлСтроки в C#

              • ФайлКласс StringBuilder

              • ЗаданиеЛабораторная работа №5. Строки

              • СтраницаРегулярные выражения

              • СтраницаЯзык регулярных выражений

              • ЗаданиеДомашнее задание №5. Регулярные выражения.

              • ЗаданиеЛабораторная работа №6. Файлы.

              • ЗаданиеДомашнее задание №6. Статистическая обработка резу...

              • ЗаданиеЛабораторная работа №7. Рекурсия

              • ЗаданиеЛабораторная работа №8. Коллекции

              • ЗаданиеДомашнее задание №7.

            • Объектно-ориентированное программирование

            • Индивидуальное задание

        • Аспирантура

        • Вечернее отделение

        • Другое

        • ОИИ

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
Язык программирования C#
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика