Методические указания

Цель задания

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)

 

 


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



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