Практический пример. Класс Array (одномерный массив)


 

Класс описывает одномерный динамический массив вещественных чисел ar длиной n. Содержит конструктор без параметров, с параметром n, копирующий конструктор, деструктор, методы инициализации, обработки и вывода массива.

 

Метод класса CountNegative() подсчитывает и возвращает количество отрицательных элементов в массиве. Метод класса InitArray все элементы массива инициализирует случайными числами диапазоне от -20 до 30. Метод класса EditArray() выполняет обработку массива: первые CountNegative() элементов массива удваивает, а остальным меняет знак.

 

using System;

namespace UnivariateArray

{

class Array

{

public Array()

{

n = 30;

ar = new int[n];

Console.WriteLine("Конструктор без параметров выполнен.");

}

 

public Array(int n)

{

this.n = n;

ar = new int[n];

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

ar[i] = 0;

Console.WriteLine("Конструктор с параметром выполнен.");

}

 

public Array(Array arn)

{

this.n = arn.n;

this.ar = new int[n];

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

ar[i] = arn.ar[i];

Console.WriteLine("Копирующий конструктор выполнен.");

}

 

~Array()

{

Console.WriteLine("Деструктор выполнен.");

}

 

public void InitArray(int a, int b)

{

Random rnd = new Random();

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

ar[i] = rnd.Next(a, b);

Console.WriteLine("Инициализация массива выполнена.");

}

 

public void PrintArray()

{

Console.WriteLine();

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

Console.Write("{0,8}", ar[i]);

Console.WriteLine();

}

 

public int CountNegative()

{

int neg = 0;

foreach (int i in ar)

{

if (i < 0)

++neg;

}

return neg;

}

 

public void AddingArray(ref int Sum)

{

Sum = 0;

foreach (int i in ar)

{

if (i < 0)

Sum+=i;

}

}

 

public void EditArray()

{

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

{

int neg = this.CountNegative();

if (i<neg)

ar[i]*=2;

else

ar[i]*=-1;

}

}

 

private int n;

private int[] ar;

 

}

// Конец определения класса Array

 

class Program

{

static void Main(string[] args)

{

Array ar0 = new Array();

Console.WriteLine("Массив с нулевыми элементами:");

ar0.PrintArray();

 

Console.Write("Введите длину массива: ");

int n = Convert.ToInt16(Console.ReadLine());

Array ar1 = new Array(n);

 

ar1.InitArray(-20, 30);

Console.WriteLine("Исходный массив ar1:");

ar1.PrintArray();

// Копирование массива ar1 в массив arN

Array arN = new Array(ar1);

// Определение суммы элементов массива arN

int Sum = 0;

arN.AddingArray(ref Sum);

Console.WriteLine("В массиве arN:");

arN.PrintArray();

Console.WriteLine("Отрицательных элементов: {0}.", arN.CountNegative());

Console.WriteLine("Сумма элементов: {0}.", Sum);

arN.EditArray();

Console.WriteLine("Массив arN после обработки:");

arN.PrintArray();

Console.ReadKey();

}

}

}

 

Результаты:

 

Конструктор без параметров выполнен.

Массив с нулевыми элементами:

 

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

 

Введите длину массива: 25

Конструктор с параметром выполнен.

Инициализация массива выполнена.

Копирующий конструктор выполнен.

Исходный массив ar1:

 

-4 2 -16 -15 -11 16 17 -16 -17 17

20 -14 27 -1 -2 14 23 -5 -4 1

23 4 7 -17 -17

 

В массиве arN:

-4 2 -16 -15 -11 16 17 -16 -17 17

20 -14 27 -1 -2 14 23 -5 -4 1

23 4 7 -17 -17

Отрицательных элементов: 13.

Сумма элементов: -139.

Массив arN после обработки:

-8 4 -32 -30 -22 32 34 -32 -34 34

40 -28 54 1 2 -14 -23 5 4 -1

-23 -4 -7 17 17

 



Дата добавления: 2021-12-14; просмотров: 246;


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

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.037 сек.