Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Методические указания. ЗАДАНИЕ 1 Сортировка массивов

Читайте также:
  1. IV Методические указания
  2. IV. Методические рекомендации по собиранию, технике записывания и оформлению фольклорных материалов
  3. IV. Методические указания
  4. V. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ПРАКТИЧЕСКИМ ЗАНЯТИЯМ ПО ДИСЦИПЛИНЕ
  5. X. Методические рекомендации для преподавателей
  6. X. Методические рекомендации для преподавателей. 39
  7. XI. Методические рекомендации для студентов по изучению дисциплины

ЗАДАНИЕ 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

mybiblioteka.su - 2015-2024 год. (0.02 сек.)