Практический пример. Класс 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; просмотров: 321;