Инициализация многомерных массивов




Для инициализации многомерного массива достаточно заключить в фигурные скобки список инициализаторов каждого его размера:
тип[,] имя_массива = {
{val, val, val, …, val},
{ val, val, val, …, val},
{val, val, val, …, val}
};
где val обозначает инициализирующее значение, а каждый внутренний блок — отдельный ряд.

Первое значение в каждом ряду сохраняется на первой позиции в массиве, второе значение — на второй позиции и т.д.

Обратите внимание на то, что блоки инициализаторов разделяются запятыми, а после завершающей эти блоки закрывающей фигурной скобки ставится точка с запятой.

Ниже в качестве примера приведена общая форма инициализации двумерного массива (4 строки, 2 столбца):

int[,] myArr = {

{1,10},

{2,20},

{3,30},

{4,40}

};

Перейдем к рассмотрению примеров решения задач, где применяются массивы и циклы.

Задача «Три цикла»

Требуется найти сумму и произведение N элементов массива, используя три варианта циклов (for, while, do-while).
Решение. В классе Program объявим статический массив действительных чисел a[1000] и 7 методов (кроме Main()), ввод исходных данных и вычисление сумм и произведений с использованием трех типов циклов.

Тогда наша программа может быть написана так:

using System;

namespace циклы

{

class Program

{

static double [] a= new double[1000];

static void Main(string[] args)

{

int n = InputA();

Console.WriteLine("сумма_F = {0}",sumF(n));

Console.WriteLine("сумма_W = {0}",sumW(n));

Console.WriteLine("сумма_D = {0}",sumD(n));

Console.WriteLine("произведение_F = {0}",multyF(n));

Console.WriteLine("произведение_W = {0}",multyW(n));

Console.WriteLine("произведение_D = {0}",multyD(n));

Console.ReadKey();

}

// Ввод размерности и массива

static int InputA()

{

int n;

Console.Write("Ввести кол-во элементов:");

n = Convert.ToInt32(Console.ReadLine());

for (int i = 0; i < n; i++)

{

Console.Write("a[{0}]=", i);

a[i] = Convert.ToDouble(Console.ReadLine());

}

return n;

}

// Сумма через цикл For

static double sumF(int n)

{

double s = 0;

for (int k = 0; k < n; k++)

s = s + a[k];

return s;

}

// Сумма через цикл While

static double sumW(int n)

{

double s=0;

int k=0;

while (k < n)

{

s = s + a[k];

k++;

}

return s;

}

// Сумма через цикл Do-while

static double sumD(int n)

{

double s = 0;

int k = 0;

do

{

s = s + a[k];

k++;

} while (k <= n);

return s;

}

// Произведение через цикл For

static double multyF(int n)

{

double p = 1;

for (int k = 0; k < n; k++)

p = p * a[k];

return p;

}

// Произведение через цикл While

static double multyW(int n)

{

double p = 1;

int k = 0;

while (k < n)

{

p = p * a[k];

k++;

}

return p;

}

// Произведение через цикл For

static double multyD(int n)

{

double p = 1;

int k = 0;

do

{

p = p * a[k];

k++;

} while (k < n);

return p;

}

}

}

Результат:

Задание. Сравните алгоритмы вычисления суммы и произведения и циклы между собой, найдите общее и различия.

Оператор foreach

Последний пример иллюстрирует применение оператора foreach к массивам. Если есть необходимость выполнить некоторые действия со всеми элементами массивов, то этот оператор цикла будет самым кратким.

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

// Объявляем два массива

int[] myArr = new int[5];

int[,] myTwoArr = new int[5, 6];

Random ran = new Random();

// Инициализируем массивы

for (int i = 1; i <= 5; i++)

{

myArr[i - 1] = ran.Next(1, 20);

for (int j = 1; j <= 6; j++)

myTwoArr[i - 1, j - 1] = ran.Next(10, 30);

}

// Вычисляем квадрат каждого элемента одномерного массива

foreach (int f in myArr)

Console.WriteLine("{0} в квадрате равно {1}", f, f*f);

Console.WriteLine();

// Вычислим сумму элементов многомерного массива

int sum = 0;

foreach (int f2 in myTwoArr)

sum += f2;

Console.WriteLine("Сумма 2d массива: {0}", sum);

Console.ReadLine();

}

}

}

Результат:

Перейдем к рассмотрению объектов, относящихся к классу String (строка).

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-12-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: