Вывести множества А и В, упорядочив элементы в них по возрастанию - Visual Basic .NET
Формулировка задачи:
Здравствуйте, товарищи!
Помогите пожалуйста осилить задачку.
__________________________________
Задача.
1) Задать множества А и В, каждое из которых состоит из n элементов, сгенерировав целые случайные числа, равномерно распределенные на отрезке [a, b] (величины n, a, b должны вводиться с клавиатуры). Случайные числа могут повторяться как в разных множествах, так и внутри одного множества. Вывести множества А и В, упорядочив элементы в них по возрастанию.
2) Выделить подмножества XA, YB, состоящие из m последних элементов упорядоченных множеств А и В. Число m вводится с клавиатуры, причем должно выполняться условие: m<n. Вычислить и вывести декартово произведение X х Y (исключив при необходимости совпадающие элементы произведения).
3) Задать отношение R: АВ = {(xi, yi) xiA, yiB, i=1…n}, где пары (xi, yi) составляются случайным образом (но охватывают все элементы из множеств А и В соответственно). Вывести полученное множество пар. Вывести график данного отношения в виде точек (xi, yi) на плоскости OXY. Построить матрицу отношения R.
__________________________________________________________
C 1 заданием разобрался:
_____________________________
Со 2 только декартово произведение,и то плохо работает..
Листинг программы
- Dim n As Integer = Val(text1.Text) - 1
- Dim a As Integer = Val(text2.Text)
- Dim b As Integer = Val(text3.Text)
- Dim m As Integer = Val(TextBox1.Text) - 1
- '\\\\\\\\\
- If a >= b Or m > n Or text1.Text = "" Or text2.Text = "" Or text3.Text = "" Or TextBox1.Text = "" Or n > 10 Or m > 10 Then
- text1.Text = ""
- text2.Text = ""
- text3.Text = ""
- TextBox1.Text = ""
- MessageBox.Show("Неверно указаны значения!", " Контроль ввода данных ")
- Exit Sub
- End If
- '\\\\\\\
- Dim dt As New DataTable
- Dim pen1 As New System.Drawing.Pen(Color.Black, 2)
- 'Вывод и сортировка множеств
- Dim am(n), bm(n), xm(m), ym(m), xy(n, 1), R(n, n) As Integer
- Randomize()
- ListBox1.Items.Clear()
- ListBox2.Items.Clear()
- Label5.Text = "Множество A:"
- Label6.Text = "Множество B:"
- For i As Integer = 0 To n
- am(i) = a + Rnd() * (b - a)
- bm(i) = a + Rnd() * (b - a)
- Next i
- Sort(am, n + 1)
- Sort(bm, n + 1)
- For i As Integer = 0 To n
- Label5.Text = Label5.Text + " " + Str(am(i))
- Label6.Text = Label6.Text + " " + Str(bm(i))
- Next i
Листинг программы
- 'Декартово произведение
- Dim k, z As Integer
- For i As Integer = n - m To n
- xm(k) = am(i)
- ym(k) = bm(i)
- k = k + 1
- Next i
- Dim dd As Boolean = False
- Dim hhh As Integer
- Dim sss As String
- Dim s As String = ""
- For i As Integer = 0 To m
- For j As Integer = 0 To m
- dd = False
- s = Str(xm(i)) + "," + Str(ym(j))
- hhh = ListBox1.Items.Count
- For ff As Integer = 1 To hhh
- sss = ListBox1.Items.Item(ff - 1)
- If sss = s Then
- dd = True
- End If
- Next ff
- If Not (dd) Then
- ListBox1.Items.Add(s)
- End If
- Next j
- Next i
Решение задачи: «Вывести множества А и В, упорядочив элементы в них по возрастанию»
textual
Листинг программы
- Imports System.Windows.Forms.DataVisualization.Charting
- Public Class Form2
- Private n, m, a, b As Integer
- Private AA() As Integer, BB() As Integer
- Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- ListBox1.Items.Clear()
- ListBox2.Items.Clear()
- ListBox3.Items.Clear()
- ListBox4.Items.Clear()
- Chart1.Visible = False
- End Sub
- Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
- If Not Integer.TryParse(TextBox1.Text, n) OrElse n = 0 Then
- TextBox1.Focus()
- TextBox1.SelectAll()
- End If
- End Sub
- Private Sub TextBox2_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox2.TextChanged
- If Not Integer.TryParse(TextBox2.Text, m) OrElse m = 0 Then
- TextBox2.Focus()
- TextBox2.SelectAll()
- End If
- End Sub
- Private Sub TextBox3_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox3.TextChanged
- If Not Integer.TryParse(TextBox3.Text, a) Then
- TextBox3.Focus()
- TextBox3.SelectAll()
- End If
- End Sub
- Private Sub TextBox4_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox4.TextChanged
- If Not Integer.TryParse(TextBox4.Text, b) Then
- TextBox4.Focus()
- TextBox4.SelectAll()
- End If
- End Sub
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- ListBox1.DataSource = Nothing
- ListBox2.DataSource = Nothing
- If n = 0 Then Exit Sub
- If a >= b Then Exit Sub
- Dim rnd As New Random
- ReDim AA(n - 1)
- ReDim BB(n - 1)
- For i = 0 To n - 1
- AA(i) = rnd.Next(a, b + 1)
- BB(i) = rnd.Next(a, b + 1)
- Next
- Array.Sort(AA)
- Array.Sort(BB)
- ListBox1.DataSource = AA
- ListBox2.DataSource = BB
- End Sub
- Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
- ListBox3.DataSource = Nothing
- If m = 0 OrElse m >= n Then Exit Sub
- Dim k As Integer = n - m
- Dim x(m - 1) As Integer, y(m - 1) As Integer
- Dim xy((m) * (m) - 1) As Point
- Dim t, xi As Integer
- For i = k To n - 1
- x(t) = AA(i)
- y(t) = BB(i)
- t += 1
- Next
- t = 0
- For i = 0 To m - 1
- xi = x(i)
- For j = 0 To m - 1
- xy(t) = New Point(xi, y(j))
- t += 1
- Next
- Next
- ListBox3.DataSource = xy.Distinct().ToArray
- End Sub
- Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
- ListBox4.DataSource = Nothing
- Dim xx() As Integer = Enumerable.Range(0, n).ToArray
- Dim yy() As Integer = Enumerable.Range(0, n).ToArray
- Dim rr(n - 1) As Point
- shuffleArray(xx)
- shuffleArray(yy)
- For i = 0 To n - 1
- rr(i) = New Point(AA(xx(i)), BB(yy(i)))
- Next
- ListBox4.DataSource = rr
- With Chart1
- .Width = 390
- .Height = 225
- .ChartAreas.Clear()
- .ChartAreas.Add("pnt")
- .Series.Clear()
- .Series.Add("R")
- .Series(0).ChartType = SeriesChartType.Point
- .Series(0).IsVisibleInLegend = False
- .Series(0).Color = Color.Red
- .Series(0).MarkerStyle = MarkerStyle.Circle
- Dim dp(n - 1) As DataPoint
- For i = 0 To n - 1
- dp(i) = New DataPoint(rr(i).X, rr(i).Y)
- dp(i).Label = rr(i).X.ToString & ";" & rr(i).Y.ToString
- .Series(0).Points.Add(dp(i))
- Next
- .Visible = True
- End With
- End Sub
- Private Sub shuffleArray(x() As Integer)
- Dim rnd As New Random
- Dim shf, tmp As Integer
- For i = 0 To x.Length - 1
- shf = i + rnd.Next(n - i - 1)
- tmp = x(i)
- x(i) = x(shf)
- x(shf) = tmp
- Next
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д