Массивы
Массивы – это набор данных, состоящий из некоторого фиксированного числа элементов, структурированных по типу.
Синтаксис массивов в C# несколько отличается от синтаксиса других С-подобных языков.
Приведем пример задания одномерного массива:
int [ ] mas = new int [3]; //задание массива с именем mas, состоящего из 3-х целых чисел.
Задать элементы массива можно следующим образом:
mas [0] = 5; mas [1] = -7; mas [2] = 89; //нумерация элементов в массиве начинается с 0.
Следующая запись позволяет вывести элементы массива в консоль (на экран):
Console.WriteLine ( mas[1].ToString ()); //вывод второго элемента массива на экран.
Элементы массива можно также задать следующим способом:
int [ ] mas = new int {5, -7, 89}; //задание элементов при объявлении массива
Задать двумерный массив можно следующим образом:
int [ ] mas = new int [ 2, 2 ]; //задание двумерного массива (две строки и два столбца). В данном массиве четыре элемента. Нумерация первого элемента mas[0,0], нумерация последнего элемента mas [1,1].
Заполнить двумерный массив можно так:
mas [ 0, 0] = 5; mas [0, 1] = -9 и т.д.; //задание элементов двумерного массива.
Перебор элементов одномерного массива происходит в цикле. Для двумерного массива придется использовать два цикла for, один вложен в другой.
Рассмотрим пример использования одномерного массива
Программа создает одномерный массив, заполняет его случайными числами и находит сумму элементов массива.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
// Массив на 50 целых чисел
int[] arr = new int[50];
// Случайное целое число
Random rnd = new Random();
// Наполняем массив
for (int i = 0; i < 50; i++)
{
arr[i] = rnd.Next();
}
// Сумма элементов
long S = 0;
// Инициализируем максимальный и минимальный
// элементы. Полагаем, что это первый элемент массива = минимальному и //максимальному
int Min = arr[0], Max = arr[0];
//Цикл перебора элементов массива
foreach (int i in arr)
{
//Расчет суммы элементов. Идет перебор элеменов массива
//каждый последующий прибавляется к предыдущему
S += i;
}
//выводим в консоль сумму элементов массива
Console.WriteLine("Сумма элементов массива = {0}", S);
//ожидаем от пользователя нажатия любой клавиши для завершения работы программы
Console.ReadKey();
}
}
}
Результат работы программы представлен на рисунке 17.
Рис. 17. Результат работы программы.
Рассмотрим еще один пример с использованием массивов.
В массив записаны заработные платы работников некоторого предприятия. Определить количество работников, заработная плата которых ниже средней заработной платы по предприятию, и вывести на экран номера элементов массива, которые соответствуют таким работникам.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
//заводим массив, состоящий из заработных плат работников
int[] mas = { 14553, 16756, 19522, 23456, 22858, 11256, 14552, 18673, 12400 };
//инициализируем переменные для хранения суммы элементов массива //и среднего значения
double sum = 0;
double av = 0;
//начинаем перебор элементов массива для расчета суммы его элементов
for (int i = 0; i < mas.Length; i++)
{
//находим сумму элементов массива
sum += mas[i];
}
//находим среднее значение элементов массива
av = sum / mas.Length;
//выводим в консоль значение средней заработной платы
Console.WriteLine("Средняя заработная плата по предприятию: {0}", av);
//начинаем перебор элементов массива для определения номеров //элементов, значение которых ниже среднего значения
for (int i = 0; i < mas.Length; i++)
{
if (mas[i] < av)
{
//выводим в консоль номера элементов, занчение которых ниже среднего значния
Console.WriteLine("Номер работника: {0}", i);
}
}
//ожидаем от пользователя нажатия любой клавиши для завершения работы программы
Console.ReadKey();
}
}
}
Результат работы программы представлен на рисунке 18.
Рис. 18. Результат работы программы.
Задачи для самостоятельной работы
Одномерные массивы
Написать программу, которая определяет, состоят ли два массива из одинаковых элементов (без учета порядка следования).
Написать программу, определяющую в заданном массиве максимальное количество подряд идущих положительных элементов.
Вычислить среднее арифметическое отличных от нуля элементов массива и вывести их в консоль.
Написать программу, группирующую элементы массива следующим образом: в начале массива все отрицательные, затем нулевые и в конце – все положительные элементы (с сохранением порядка следования в каждой группе).
Написать программу, располагающую элементы массива
в следующем порядке:
.
Написать программу, которая определяет, сколько элементов с равными значениями содержится в массиве. Например:
Задайте количество элементов массива: 7
Введите элементы массива: 3 6 –1 3 7 3 7
В данном массиве два элемента равны 7, три элемента равны 3
Написать программу, которая каждый элемент массива, начиная со второго, заменяет суммой всех предшествующих ему элементов. Например:
Введите элементы массива: 3 4 0 5 –7
После замены получен массив: 3 3 7 7 12
Написать программу, находящую минимальный по абсолютной величине элемент массива.
Написать программу, определяющую, сколько элементов массива по абсолютной величине больше заданного числа N.
Написать программу, группирующую элементы массива следующим образом: в начале массива все нечетные, а затем все четные элементы (с сохранением порядка следования в каждой группе).
Написать программу, которая упорядочивает элементы массива по убыванию.
Написать программу, определяющую, какой элемент массива повторяется максимальное количество раз. Если таких элементов несколько, то вывести на экран их все.
Написать программу, определяющую, сколько четных и нечетных элементов содержится в массиве.
Двухмерные массивы
Написать программу, находящую сумму элементов
матрицы
,
для которых модуль разности индексов
равен заданному числу
.Написать программу, которая в данной матрице
заменяет значение каждого элемента на
сумму окружающих его восьми элементов,
оставляя граничные элементы без
изменений.Написать программу, вычисляющую в матрице
алгебраическое дополнение заданного
элемента.
Написать программу, которая переставляет строки данной матрицы так, чтобы первые элементы этих строк образовывали возрастающую (неубывающую) последовательность.
Например:
Задайте количество строк матрицы: 5
Задайте количество столбцов матрицы: 3
Введите элементы матрицы:
6 0 1
-2 3 4
4 4 7
1 –2 8
4 0 8
Результат выполнения программы:
-2 3 4
1 –2 8
4 4 7
4 0 8
6 0 1
Написать программу, в которой элементам двухмерного массива присвоить значения соответственно приведенной схеме, после чего вывести массив на экран:
Написать программу, находящую обратную матрицу для заданной квадратной матрицы 3-го порядка.
Написать программу, которая все элементы квадратной матрицы, лежащие выше главной диагонали, заменяет единицами.
Написать программу, которая из элементов матрицы
формирует матрицу
,
заполняя ее по столбцам.Написать программу, которая все элементы квадратной матрицы, лежащие ниже главной диагонали, заменяет нулями.
Дана последовательность целых чисел:
и целочисленная квадратная матрица
порядка
.
Написать программу, заменяющую нулями
элементы матрицы с четной суммой
индексов, для которых имеются равные
среди членов последовательности.Написать программу, находящую сумму элементов квадратной матрицы, лежащих ниже обеих ее диагоналей.
Написать программу, находящую произведение двух заданных матриц (если умножение не выполнимо, вывести соответствующее сообщение).
Написать программу, в которой элементам квадратной матрицы 10-го порядка присвоить значения 1,2,…,100 по спирали.
Написать программу, которая из элементов массива
формирует массив:
и выводит его на экран.
Написать программу, которая в квадратной матрице 10-го порядка определяет номер столбца и номер строки, на пересечении которых находится наибольший элемент (заполнить матрицу случайными числами из диапазона [0..20] и вывести ее на экран).
