Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
1

Декартово произведение элементов массивов

04.01.2014, 20:47. Показов 1181. Ответов 7
Метки нет (Все метки)

Здравствуйте.
С клавиатуры вводится параметр m.
В TextBox9 выводятся m последних элементов массива А, в TextBox7 выводятся m последних элементов массива B.

Преобразовать Содержимое TextBox9 принять за массив masX, TextBox7 - в массив Masy, и осуществить их декартово произведение,исключив повторяющиеся элементы при необоходимости.
Как это реализовать?
Проект приложил.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вложения
Тип файла: zip zad1.zip (81.5 Кб, 2 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2014, 20:47
Ответы с готовыми решениями:

Найти произведение минимальных элементов массивов массивов
Найти произведение минимальных элементов массивов X(n,m) и Y(n,m) Помогите написать программу....

Декартово произведение
Если есть некоторое множество элементов и мне надо вычислить количество подмножеств данного...

декартово произведение
AxB=? A={пустое множество} B={{a},c}

Декартово произведение
Добрый день помогите разобраться с задачей. " Вычислить координаты всех восьми соседей заданной...

7
Эксперт .NET
5308 / 4104 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
04.01.2014, 21:20 2
Думаю так.
VB.NET
1
2
3
4
5
6
7
8
9
10
 'Массив_1
        Dim A() As Integer = {1, 2, 3, 4, 5}
        'Массив_2
        Dim B() As Integer = {6, 7, 8, 9, 0}
        'Получение всех упорядоченных пар двух массивов
        For i As Integer = 0 To A.Length - 1
            For j As Integer = 0 To B.Length - 1
                TextBox1.AppendText(A(i).ToString & ", " & B(j).ToString & vbCrLf)
            Next
        Next
Вместо 0 в циклах подставьте свои значение m.
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
05.01.2014, 00:00  [ТС] 3
Цитата Сообщение от insite2012 Посмотреть сообщение
Думаю так.
Вместо 0 в циклах подставьте свои значение m.
Вы меня не так поняли.
Это я реализовал.
Мне нужно следующее:
Преобразовать Содержимое TextBox9 принять за массив masX, TextBox7 - в массив Masy, и осуществить их декартово произведение,исключив повторяющиеся элементы при необоходимости

Проект приложен к первому сообщению,чтобы можно было увидеть как реализован вывод m последних элементов.

Декартово произведение множеств ТЕОРИЯ
0
Эксперт .NET
5308 / 4104 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
05.01.2014, 01:02 4
Теория мне известна. А если поточнее, какие элементы исключить? Повторяющиеся пары после произведения?

Добавлено через 48 минут
Для начала вот так. Дальше доделаете сами?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        'Переменные
        Dim a1, b1, n1, m1 As Integer
 
        'Проверка на ввод НЕ чисел
        Do
            If IsNumeric(TextBox1.Text) Then
                If IsNumeric(TextBox2.Text) Then
                    If IsNumeric(TextBox3.Text) Then
                        If IsNumeric(TextBox8.Text) Then
                            Exit Do
                        End If
                    End If
                End If
            End If
            MsgBox("Ввод не верный!" & vbCrLf &
                                   "Попробуйте снова!")
            Exit Sub
        Loop
 
        'Формирование основных переменных
        a1 = Val(TextBox2.Text)
        b1 = Val(TextBox3.Text)
        n1 = Val(TextBox1.Text)
        m1 = Val(TextBox8.Text)
 
        'Проверка переменной m
        If m1 > n1 Then
            MsgBox("Значение переменной m задано неверно!")
            Exit Sub
        End If
 
        'Массивы А и В
        Dim List_A As New List(Of Integer)
        Dim List_B As New List(Of Integer)
 
        'Генератор
        Dim RandGenerator As New Random
 
        'Формирование массивов и добавление данных в TextBox-ы
        For i As Integer = 0 To n1 - 1
            List_A.Add(RandGenerator.Next(a1, b1 + 1))
            TextBox4.AppendText(List_A(i).ToString & ", ")
            List_B.Add(RandGenerator.Next(a1, b1 + 1))
            TextBox5.AppendText(List_B(i).ToString & ", ")
        Next
 
        'Вывод m элементов массива А
        For i As Integer = n1 - m1 To List_A.Count - 1
            TextBox9.AppendText(List_A(i).ToString & ", ")
        Next
        'Вывод m элементов массива В
        For j As Integer = n1 - m1 To List_B.Count - 1
            TextBox7.AppendText(List_B(j).ToString & ", ")
        Next
    End Sub
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
05.01.2014, 01:47  [ТС] 5
Цитата Сообщение от insite2012 Посмотреть сообщение
Теория мне известна. А если поточнее, какие элементы исключить? Повторяющиеся пары после произведения?

Добавлено через 48 минут
Для начала вот так. Дальше доделаете сами?

Мой вариант:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Public Class Form1
    Public a, b, m, n, mnA, mnB, pX, pY, xxy, u As Integer
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If (TextBox1.Text = "") Or (TextBox2.Text = "") Or (TextBox3.Text = "") Or (TextBox8.Text = "") Then
            MsgBox("Не указаны необходимые параметры!", MsgBoxStyle.Critical)
        Else
 
            a = Val(TextBox2.Text)
            b = Val(TextBox3.Text)
            m = Val(TextBox8.Text)
            n = Val(TextBox1.Text)
 
            TextBox4.Clear()
            TextBox5.Clear()
 
 
            Dim t As Integer
            Dim mnA(n) As Integer
 
            TextBox4.Text = ""
            Debug.WriteLine("")
            For i = 1 To n
m:              Randomize()
                t = a + (b - a) * Rnd()
                For j = 1 To n
                    If t = mnA(j) Then GoTo m
                Next
                mnA(i) = t
 
            Next
 
            For i = 1 To n
                For j = 1 To n - 1
                    If mnA(j) > mnA(j + 1) Then
                        t = mnA(j)
                        mnA(j) = mnA(j + 1)
                        mnA(j + 1) = t
                    End If
                Next j
            Next i
            For i = 1 To n
                TextBox4.Text += CStr(mnA(i)) + Space(3)
            Next i
 
            Dim r As Integer
            Dim mnB(n) As Integer
 
            TextBox5.Text = ""
            Debug.WriteLine("")
            For i = 1 To n
z:              Randomize()
                t = a + (b - a) * Rnd()
                For j = 1 To n
                    If t = mnB(j) Then GoTo z
                Next
                mnB(i) = t
 
            Next
 
            For i = 1 To n
                For j = 1 To n - 1
                    If mnB(j) > mnB(j + 1) Then
                        t = mnB(j)
                        mnB(j) = mnB(j + 1)
                        mnB(j + 1) = t
                    End If
                Next j
            Next i
            For i = 1 To n
                TextBox5.Text += CStr(mnB(i)) + Space(3)
            Next i
 
            TextBox7.Clear()
            TextBox9.Clear()
            Dim itemsTodisplay = m
            Dim itemsInArray As Integer = mnA.Length
            Dim itemsInArray1 As Integer = mnB.Length
            Dim firstItem As Integer = (itemsInArray - itemsTodisplay)
            If firstItem >= 0 Then
                For i = firstItem To (itemsInArray - 1)
                    TextBox9.Text += CStr(mnA(i)) + Space(3)
                    TextBox7.Text += CStr(mnB(i)) + Space(3)
                Next i
            End If
        End If
 
 
 
 
    End Sub
Интересует как то что я вывел в textbox9 и textbox7 преобразовать в массивы mnX и mnY,и выполнить их декартово произведение,сключив при необходимости совпадающие элементы произведения.
0
Эксперт .NET
5308 / 4104 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
05.01.2014, 02:55 6
Как раз просто вывести их туда не представляет никакого труда. Добавьте вот это в конец моего кода.
VB.NET
1
2
3
4
5
For i As Integer = n1 - m1 To List_A.Count - 1
            For j As Integer = n1 - m1 To List_B.Count - 1
                TextBox6.AppendText(List_A(i).ToString & "," & List_B(j).ToString & " | ")
            Next
        Next
Добавлено через 32 минуты
Вот полный код. Там есть два массива координат, для дальнейшего построения точек, можно использовать.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Public Class Form1
 
    Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        'Переменные
        Dim a1, b1, n1, m1 As Integer
 
        'Проверка на ввод НЕ чисел
        Do
            If IsNumeric(TextBox1.Text) Then
                If IsNumeric(TextBox2.Text) Then
                    If IsNumeric(TextBox3.Text) Then
                        If IsNumeric(TextBox8.Text) Then
                            Exit Do
                        End If
                    End If
                End If
            End If
            MsgBox("Ввод не верный!" & vbCrLf &
                                   "Попробуйте снова!")
            Exit Sub
        Loop
 
        'Формирование основных переменных
        a1 = Convert.ToInt32(TextBox2.Text)
        b1 = Convert.ToInt32(TextBox3.Text)
        n1 = Convert.ToInt32(TextBox1.Text)
        m1 = Convert.ToInt32(TextBox8.Text)
 
        'Проверка переменной m
        If m1 > n1 Then
            MsgBox("Значение переменной m задано неверно!")
            Exit Sub
        End If
 
        'Массивы А и В
        Dim List_A As New List(Of Integer)
        Dim List_B As New List(Of Integer)
 
        'Генератор
        Dim RandGenerator As New Random
 
        'Формирование массивов и добавление данных в TextBox-ы
        For i As Integer = 0 To n1 - 1
            List_A.Add(RandGenerator.Next(a1, b1 + 1))
            TextBox4.AppendText(List_A(i).ToString & ", ")
            List_B.Add(RandGenerator.Next(a1, b1 + 1))
            TextBox5.AppendText(List_B(i).ToString & ", ")
        Next
 
        'Вывод m1 элементов массива А
        For i As Integer = n1 - m1 To List_A.Count - 1
            TextBox9.AppendText(List_A(i).ToString & ", ")
        Next
        'Вывод m1 элементов массива В
        For j As Integer = n1 - m1 To List_B.Count - 1
            TextBox7.AppendText(List_B(j).ToString & ", ")
        Next
 
        'Массивы координат точеу X и Y ( для дальнейшего использования)
        Dim X() As Integer = New Integer(m1 - 1) {}
        Dim Y() As Integer = New Integer((m1 * m1) - 1) {}
        Dim Index_x As Integer = 0
        Dim Index_y As Integer = 0
 
        'Вывод упорядоченых пар m1 элементов, заполнение массивов координат точек
        For i As Integer = n1 - m1 To List_A.Count - 1
            X(Index_x) = List_A(i)
            For j As Integer = n1 - m1 To List_B.Count - 1
                Y(Index_y) = List_B(j)
                TextBox6.AppendText(List_A(i).ToString & "," & List_B(j).ToString & " | ")
                Index_y += 1
            Next
            Index_x += 1
        Next
    End Sub
End Class

Не по теме:

И никаких GoTo не потребовалось. :)

0
Эксперт .NET
5308 / 4104 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
05.01.2014, 03:02 7
Это именно то, что требовалось?
0
Миниатюры
Декартово произведение элементов массивов  
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
05.01.2014, 16:31  [ТС] 8
Цитата Сообщение от insite2012 Посмотреть сообщение
Это именно то, что требовалось?
да,именно.
все верно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2014, 16:31

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Декартово произведение
A = {a,b,c} B={a,b,{c}} Я знаю, как декартово произведение множеств находится, но когда во...

Выполнить декартово произведение
Вобщем имеем масив Х={1,2,3,4,5}(одномерный) дальше мы должны выполнить декартово произведение ...

Декартово произведение множеств
Посчитайте |(A\times B)\backslash (C\times...

Декартово произведение множеств
Найти n-ю степень множества X=\{\{ \empty\}, y\}, если n=2


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.