Методические указания. 1. Перед выполнением варианта задания ознакомится с программами сортировки массивов по невозрастанию

1. Перед выполнением варианта задания ознакомится с программами сортировки массивов по невозрастанию.

2. Параметры метода Next() класса Random при создании случайных величин в массивах необходимо выбирать так, чтобы после преобразования по заданному действию результирующий массив отличался от исходного.

3. Во всех вариантах построить в отдельном окне диаграммы, отражающие величину элементов массива.

Пример программы, которая формирует одномерный массив из 20 случайных чисел больших (-40) и меньших (110) и, по выбору пользователя, сортирует его по невозрастанию или отфильтровывает положительные элементы. Программа, по заданию пользователя, создает двумерный массив – матрицу из случайных чисел в диапазоне (10,70) и сортирует его столбцы по неубыванию элементов третьей строки.

Form1.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplicationL1

{

public partial class Form1: Form

{

Form2 f2;

public int[] OdnMas; int[,] DvMas; int[] OdnMasRez; int[,] DvMasRez; int[] W2;

String[] DvMasSt;

String[] DvMasRezSt;

const int Count = 20, Rang = 10;

public Form1()

{

InitializeComponent();

}

private void одномерныйToolStripMenuItem_Click(object sender, EventArgs e)

{//Создание одномерного массива случайных чисел

listBox1.Items.Clear();

OdnMas = new int[Count];

Random rnd = new Random();

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

{

OdnMas[i] = rnd.Next(-40, 110);

listBox1.Items.Add(OdnMas[i]);

}

}

private void button1_Click(object sender, EventArgs e)

{

Close();

}

private void двумерныйToolStripMenuItem1_Click(object sender, EventArgs e)

{//Создание двумерного массива случайных чисел

listBox1.Items.Clear();

DvMas = new int[Rang, Rang / 2];

DvMasSt = new string[Rang];

Random rnd = new Random();

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

{

for (int j = 0; j < Rang / 2; j++)

{

DvMas[i, j] = rnd.Next(10, 70);

DvMasSt[i] += DvMas[i, j].ToString() + ' ';

}

listBox1.Items.Add(DvMasSt[i]);

}

}

private void одномерныйМассивToolStripMenuItem_Click(object sender, EventArgs e)

{

//Сортировка по неубыванию одномерного массива

if (OdnMas == null) return;

listBox2.Items.Clear();

int W;

OdnMasRez = new int[Count];

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

OdnMasRez[i] = OdnMas[i];

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

{

for (int j = Count - 1; j > i; j--)

{

if (OdnMasRez[j] > OdnMasRez[j - 1])

{

W = OdnMasRez[j - 1];

OdnMasRez[j - 1] = OdnMasRez[j];

OdnMasRez[j] = W;

}

}

}

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

{

listBox2.Items.Add(OdnMasRez[i]);

}

}

private void графическоеПредставлениеToolStripMenuItem_Click(object sender, EventArgs e)

{//Графическое представление

f2 = new Form2();

f2.OdnMasRez2 = OdnMasRez;

f2.Show();

}

private void двумерныйМассивToolStripMenuItem_Click(object sender, EventArgs e)

{

if (DvMas == null) return;

// Сортировка столбцов по неубыванию элементов третьей строки k=(3-1)

listBox2.Items.Clear();

W2 = new int[Rang];

DvMasRez = new int[Rang, Rang / 2];

DvMasRezSt = new string[Rang];

for (int i = 0; i < Rang / 2; i++)

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

DvMasRez[k, i] = DvMas[k, i];

for (int i = 0; i < Rang / 2; i++)

{

for (int j = Rang / 2 - 1; j > i; j--)

{

if (DvMasRez[(3 - 1), j] < DvMasRez[(3 - 1), j - 1])

{

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

{

W2[k] = DvMasRez[k, j - 1];

DvMasRez[k, j - 1] = DvMasRez[k, j];

DvMasRez[k, j] = W2[k];

}

}

}

}

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

{

for (int j = 0; j < Rang / 2; j++)

{

DvMasRezSt[i] += DvMasRez[i, j].ToString() + ' ';

}

listBox2.Items.Add(DvMasRezSt[i]);

}

OdnMasRez = new int[Rang / 2];

for (int i = 0; i < Rang / 2; i++)

OdnMasRez[i] = DvMasRez[(3 - 1), i];

}

private void одномерныйМассивToolStripMenuItem1_Click(object sender, EventArgs e)

{

//Отбор положительных элементов

if (OdnMas == null) return;

listBox2.Items.Clear();

int j = 0;

OdnMasRez = new int[Count];

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

{

if (OdnMas[i] > 0)

{

OdnMasRez[j] = OdnMas[i];

j++;

}

}

for (int i = j; i < Count; i++)

{

OdnMasRez[i] = 0;

}

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

{

listBox2.Items.Add(OdnMasRez[i]);

}

}

}

}

Рис. 4.1 Форма №1 проекта.

Form2.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplicationL1

{

public partial class Form2: Form

{

Bitmap myBmp;

public int[] OdnMasRez2; int Count2;

public Form2()

{

InitializeComponent();

}

private void Form2_Shown(object sender, EventArgs e)

{

if (OdnMasRez2 == null) return;

Count2 = OdnMasRez2.Length;

Double My = 0, MaxY = 0;

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

{

if (System.Math.Abs(OdnMasRez2[i]) > MaxY)

{

MaxY = System.Math.Abs(OdnMasRez2[i]);

}

}

My = (pictureBox1.Height) / 2.2 / MaxY;

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

{

OdnMasRez2[i] = Convert.ToInt32(OdnMasRez2[i] * My);

}

myBmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);

Graphics gr1 = Graphics.FromImage(myBmp);

Pen P1 = new Pen(Color.Red, 2);

gr1.DrawRectangle(P1, 10, 10, pictureBox1.Width - 20, pictureBox1.Height - 20);

Brush P2 = new SolidBrush(Color.Green);

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

{

int x1, y1, x2, y2;

if (OdnMasRez2[i] >= 0)

{

y1 = (pictureBox1.Height) / 2 - OdnMasRez2[i];

y2 = OdnMasRez2[i];

x1 = i * (pictureBox1.Width) / (Count2) + 10;

x2 = (pictureBox1.Width) / (Count2 * 3);

}

else

{

y1 = (pictureBox1.Height) / 2;

y2 = -OdnMasRez2[i];

x1 = i * (pictureBox1.Width) / (Count2) + 10;

x2 = (pictureBox1.Width) / (Count2 * 3);

}

gr1.FillRectangle(P2, x1, y1, x2, y2);

Pen P3 = new Pen(Color.RosyBrown, 3);

gr1.DrawLine(P3, 10, pictureBox1.Height / 2, pictureBox1.Width - 10, pictureBox1.Height / 2);

}

pictureBox1.Image = myBmp;

}

}

}

Рис. 4.2 Форма №2 проекта.

Варианты задания

1. Сформировать одномерный массив из 20 случайных элементов, разность между элементами которого меньше А=5 и переставить в начало все элементы меньшие В=4.

2. Сформировать одномерный массив из 20 элементов, разность между элементами которого случайная величина, меньшая А=10 и переставить в начало все элементы меньшие В=5.

3. Сформировать одномерный массив из 20 элементов и удалить все отрицательные элементы.

4. Сформировать одномерный массив случайных чисел из 20 элементов, меньших В=100, и отсортировать в порядке возрастания.

5. Сформировать одномерный массив из 20 элементов (положительных и отрицательных), и переставить в начало все положительные элементы.

6. Сформировать массив из 20 случайных элементов в диапазоне (0;90), и переставить в начало все элементы меньшие В=45.

7. Сформировать одномерный массив из 20 элементов, разность между элементами которого меньше А=35 и переставить в начало все элементы меньшие В=30.

8. Сформировать одномерный массив из 20 элементов (положительных и отрицательных) и удалить все отрицательные элементы.

9. Сформировать двумерный массив элементов (положительных и отрицательных) и обнулить все отрицательные элементы.

10. Сформировать двумерный массив элементов и отсортировать столбцы в порядке возрастания элементов первой строки (i=0).

11. Сформировать двумерный массив элементов и отсортировать столбцы в порядке невозрастания элементов четвертой строки (i=3).

12. Сформировать двумерный массив элементов и отсортировать столбцы в порядке невозрастания элементов второй строки (i=1)



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: