Читайте также:
|
|
ЗАДАНИЕ 1 Сортировка массивов
Цель задания
1. Получение практических навыков работы с Windows-проектом.
2. Знакомство с алгоритмами упорядочения в массивах.
Постановка задачи
Для массива чисел выполнить указанные действия и перестановки, и вывести исходный массив, а также результаты перестановки в числовой и графической форме. Необходимо использовать элементы управления: Form; MenuStrip; ListBox; Label; Button; PictureBox.
Содержание отчета
1. Постановка задачи для конкретного варианта.
2. Текст клиентского кода программы и графический дизайн форм.
3. Результаты выполнения программы с заданными характеристиками массивов.
Методические указания
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]);
}
}
}
}
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;
}
}
}
Варианты задания
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)
Дата добавления: 2015-07-11; просмотров: 44 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
НА БАКАЛАВPСЬКУ PОБОТУ СТУДЕНТУ | | | Создание конструктора Form1.cs |