Хелпикс

Главная

Контакты

Случайная статья





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



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

Для инициализации многомерного массива достаточно заключить в фигурные скобки список инициализаторов каждого его размера:
тип[,] имя_массива = {
{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;

}

 }

}

Результат:

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



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.