Класс Num_Array. Методы для решения задач
using System;
using System.Collections.Generic;
using System.Text;
namespace Первые_учебные_классы
{
class Num_Array
{
static uint size; // Закрытое статическое поле - размер массива
double[] mas = new double[size];// Закрытое обычное поле - вещественный // массив
/// <summary>
/// Шаг 1. Статический метод Input_size(), который вводит размер массива с консоли:
/// </summary>
public static void Input_size()
{
Console.WriteLine("Введите размер массива");
size=UInt32.Parse(Console.ReadLine());
}
/// <summary>
/// Шаг 2. Статический метод get_size(), который получает размер массива
/// </summary>
public static uint get_size()
{
return size;
}
/// <summary>
/// Шаг 3. Закрытая ссылочная переменная Ob, которая будет нужна для вызовов методов Next(...) класса Random:
/// </summary>
private Random Ob = new Random();
/// <summary>
/// Продолжение шага 3: Обычный метод Sozd_rnd(int max) для заполнения массива случайными числами от 0 до max (целые части чисел). Дробные части чисел будут создаваться с помощью метода NextDouble().
/// </summary>
public void Sozd_rnd(int max)
{
for (uint i = 0; i < size; i++)
mas[i] = Ob.Next(max) + Ob.NextDouble();
|
|
}
/// <summary>
/// Шаг 4. Обычный метод Show(), который выводит элементы массива на экран:
/// </summary>
public void Show()
{
Console.WriteLine("Содержимое массива: ");
for (uint i = 0; i < size; i++)
Console.Write("{0:0.####} ", mas[i]);
Console.WriteLine();
}
/// <summary>
/// Шаг 5. Перегруженный метод Sozd_rnd(int min,int max) для заполнения массива случайными числами от min до max (целые части чисел).
/// Дробные части чисел будут создаваться с помощью метода NextDouble().
/// </summary>
public void Sozd_rnd(int min, int max)
{
for (uint i = 0; i < size; i++)
mas[i] = Ob.Next(min,max) + Ob.NextDouble();
}
/// <summary>
/// Шаг 6. Метод Input_mas(), который вводит элементы массива с консоли:
/// </summary>
public void Input_mas()
{
for (uint i = 0; i < size; i++)
{
Console.WriteLine("Введите " + i + " элемент массива!");
mas[i] = Double.Parse(Console.ReadLine());
}
}
/// <summary>
/// Шаг 7. Метод упорядочевания элементов массива по возрастанию:
/// </summary>
public void Sortirovka()
{
Array.Sort(mas);
}
/// <summary>
/// Шаг 8. Метод, который реверсирует массив:
/// </summary>
public void Rewersirovanie()
{
Array.Reverse(mas);
}
/// <summary>
/// Шаг 9. Метод, который возвращает значение наибольшего элемента
/// массива и количество его повторов:
/// </summary>
public double Poisk_max(out uint kol)
{
double max = mas[0];
for(uint i = 0; i < size; i++)
if(mas[i]>max)
max=mas[i];
kol=0;
for (uint i = 0; i < size; i++)
if (mas[i] == max)
kol++;
return max;
}
// Методы для решения задач:
////////////////////////////////////////////////////////////////////////
public void Arifm_progr(double A, double D)
{
mas[0] = A;
for (uint i = 1; i < size; i++)
mas[i] = mas[i - 1] + D;
}
////////////////////////////////////////////////////////////////////////
public uint Powtor_elem()
{
uint kol_tek, kol_rez = 0;
for (uint i = 0; i < size; i++)
{
kol_tek = 0;
for (uint j = 0; j < size; j++)
if (mas[i] == mas[j])
kol_tek++;
if (kol_tek == 1) // Элемент сравнился только сам с собой
kol_rez++;
}
|
|
return kol_rez;
}
////////////////////////////////////////////////////////////////////////
public uint Powtor_elem2()
{
uint kol_tek, kol_rez = 1;
for (uint i = 1; i < size; i++)
{
kol_tek = 0;
for (uint j = 0; j < i; j++)
if (mas[j] == mas[i])
kol_tek++;
if (kol_tek == 0) // Элемент не сравнился с предыдущими //элементами
kol_rez++;
}
return kol_rez;
}
}
}
Тестирование класса Num_Array
using System;
using System.Collections.Generic;
using System.Text;
namespace Первые_учебные_классы
{
class Test
{
static void Main(string[] args)
{
//////////////////////////////////Класс Num_Array////////////////
// Шаг 1. Тестирование статического метода Input_size():
Num_Array.Input_size();
// Шаг 2. Тестирование статического метода get_size():
Console.WriteLine("Установленный размер массива: " + Num_Array.get_size());
// Создание экземпляра класса Num_Array:
Num_Array Ob_mas = new Num_Array();
// Шаг 3. Тестирование обычного метода Sozd_rnd(int max):
int min, max;
Console.WriteLine("Введите предельное число для генерации случайных чисел");
max = Int32.Parse(Console.ReadLine());
Ob_mas.Sozd_rnd(max);
Ob_mas.Show();
// Шаг 4. Тестирование перегруженного метода
Sozd_rnd(int min,int max):
Console.WriteLine("Введите oтрезок для генерации случайных чисел");
min = Int32.Parse(Console.ReadLine());
max = Int32.Parse(Console.ReadLine());
Ob_mas.Sozd_rnd(min,max);
Ob_mas.Show();
// Шаг 5. Тестирование метода Input_mas():
Ob_mas.Input_mas();
Ob_mas.Show();
// Шаг 6. Тестирование метода Sortirovka():
Ob_mas.Sortirovka();
Ob_mas.Show();
// Шаг 7. Тестирование метода Rewersirovanie():
Ob_mas.Rewersirovanie();
Ob_mas.Show();
// Шаг 8. Тестирование метода Poisk_max(out uint kol)
uint kol;
double maxx = Ob_mas.Poisk_max(out kol);
Console.WriteLine("Максимальный элемент " + maxx + " повторяется " + kol + " раз.");
// Решения задач с использованием класса Num_Array
/* Задача 1. Дано целое число N (> 0), а также два числа А и D. Сформировать объект-массив размера N, содержащий члены арифметической прогрессии, первый член которой равен А,разность прогрессии равна D.*/
Num_Array.Input_size();
Num_Array Ob_mas1 = new Num_Array();
double A, D;
Console.WriteLine("Введите первый член и разность арифметической прогрессии!");
A = Double.Parse(Console.ReadLine());
D = Double.Parse(Console.ReadLine());
// Для решения задачи нужно разработать метод Arifm_progr(double A,double D).
Ob_mas1.Arifm_progr(A,D);
Ob_mas1.Show();
/* Задача 2. Дано числовой массив размера N (> 0), в котором имеются
* повторяющиеся элементы. Сколько различных элементов в массиве?
Под различными элементами понимаются элементы,
* которые встречаются в массиве только один раз.*/
// Сначала нужно заполнить массив так, что бы в нем некоторые //элементы повторялись:
Ob_mas1.Input_mas();
Ob_mas1.Show();
// Для решения задачи нужно разработать метод Powtor_elem().
Console.WriteLine("В массиве различных элементов " + Ob_mas1.Powtor_elem());
/* Задача 3. Дано числовой массив размера N (> 0), в котором имеются
* повторяющиеся элементы. Сколько различных чисел в массиве?*/
// Для решения задачи нужно разработать метод Powtor_elem2(), в // котором повторяющийся элемент считается различным (один раз).
Console.WriteLine("В массиве различных элементов " + Ob_mas1.Powtor_elem2());
}
}
}