Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
1

Перемешивание чисел

11.07.2012, 15:48. Показов 1672. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Есть числа: 1,2,3,4,5.
Нужно что бы при нажатие на Button в Excel записывались различные комбинации из этих чисел в ячейках с B1 по Bn (пока незакончатся комбинации).

Добавлено через 16 часов 8 минут
Хоть что то похожее есл кто нибудь видел конечно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2012, 15:48
Ответы с готовыми решениями:

Перемешивание значений массива
Имеется массив нужно перемешивать их значения. помогите пожалуйста! Dim myarray(15) As Integer...

Перемешивание списка фамилий
т.е у меня есть список участников забега, допустим 10 фамилий. мне надо, случайно определить кто...

RichTextBox.lines рандомное перемешивание
Ребят, собственно задача в заголовке темы. Возможно ли как-то рандомно перемешать строки?

Datagridview - смена позиции, выбор, перемешивание и т.д
Здравствуйте! Дали задание в универе, не могу разобратся. Написал код который загружает в ...

9
233 / 223 / 146
Регистрация: 19.03.2012
Сообщений: 369
11.07.2012, 17:37 2
Идея такова
1.Берёш первую цифру слева
2.Подставляеш в каждую позицию с лева на право (кроме своей)
21345
23145
...
23451
3.Берёш следуйщую цифру
4.Повторяеш 2
21345
13245
...
13452
Я пробовал с тремя цифрами по этому алгоритму получилось. Программу начал но пока нет времени закончить. Если получится, то виложу. Может есть какойто более простой способ?
1
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
11.07.2012, 19:43 3
Spread, идея такая - у тебя есть массив. В цикле с помощью функции Random генерируешь случайное число для i-го элемента. Это случайное число будет означать новую позицию этого элемента в массиве. Потом генерируешь новое число, ну также смотрищь, чтобы оно не совпадала с уже сгенерированными.
1
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
11.07.2012, 23:25  [ТС] 4
буду пробовать, спасибо за идеи
0
233 / 223 / 146
Регистрация: 19.03.2012
Сообщений: 369
12.07.2012, 11:47 5
Вот вроде получилось.
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
Public Class Form1
    'на форме TextBox1 и кнопка Button1
    Dim c1, c2, c3, nabor_cifr, stroka, stroka_temp As String
    'кнопка для запуска поиска
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        nabor_cifr = TextBox1.Text 'считываем набор цифр
        stroka_temp = nabor_cifr
        stroka = nabor_cifr
        'циклический сдвиг влево
        For c As Integer = 1 To Len(nabor_cifr) - 1
            Sdvig_rite()
            stroka_temp = stroka_temp & " " & stroka
            nabor_cifr = Mid(nabor_cifr, 2, Len(nabor_cifr) - 1) & Mid(nabor_cifr, 1, 1)
            stroka = nabor_cifr
        Next
        'строку в массив с разделением на слова
        Dim Arry() As String = stroka_temp.Split(" ")
        'удаляем повторяющиеся комбинации
        Dim NewArry As IEnumerable(Of String) = Arry.Distinct()
        'выводим что получилось
        MsgBox(Join(NewArry.ToArray, ", "))
    End Sub
    'сдвигаем по очереди каждую цифру вправо по позициям
    Sub Sdvig_rite()
        For i As Integer = 1 To Len(nabor_cifr)
            c1 = Mid(nabor_cifr, i, 1)
            Select Case i
                Case 1 'первая позиция
                    c2 = Mid(nabor_cifr, 2, Len(nabor_cifr) - 1)
                Case Len(nabor_cifr) 'последяя позиция
                    c2 = Mid(nabor_cifr, 1, Len(nabor_cifr) - 1)
                Case Else 'любая в середине
                    c2 = Mid(nabor_cifr, 1, i - 1) & Mid(nabor_cifr, i + 1, Len(nabor_cifr) - i + 1)
            End Select
            c3 = c1 & c2
            stroka = stroka & " " & c3
            For n As Integer = 1 To Len(c2)
                If n > i Then
                    c3 = Mid(c2, 1, n - 1) & c1 & Mid(c2, n, Len(c2) - n + 1)
                    stroka = stroka & " " & c3
                End If
            Next
            c3 = c2 & c1
            stroka = stroka & " " & c3
        Next
    End Sub
End Class
Перемешивает не только цифры, но и буквы.
1
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
12.07.2012, 23:48  [ТС] 6
спасибо, всё работает!
а как сделать что бы он все значения записал в *.xlsx в ячйки от B1 и до Bn ну пока числа не кончатся?
0
195 / 187 / 9
Регистрация: 14.06.2011
Сообщений: 495
13.07.2012, 01:05 7
Вместо MsgBox сделай массив и через массив построчно в эксель
0
233 / 223 / 146
Регистрация: 19.03.2012
Сообщений: 369
13.07.2012, 10:06 8
Цитата Сообщение от Spread Посмотреть сообщение
а как сделать что бы он все значения записал в *.xlsx в ячйки от B1 и до Bn ну пока числа не кончатся?
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
Imports Microsoft.Office.Interop
 
Public Class Form1
    'на форме TextBox1 и кнопка Button1
    Dim c1, c2, c3, nabor_cifr, stroka, stroka_temp As String
    ' Excel
    Dim oExcel As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
 
    'кнопка для запуска поиска
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        nabor_cifr = TextBox1.Text 'считываем набор цифр
        stroka_temp = nabor_cifr
        stroka = nabor_cifr
        'циклический сдвиг влево
        For c As Integer = 1 To Len(nabor_cifr) - 1
            Sdvig_rite()
            stroka_temp = stroka_temp & " " & stroka
            nabor_cifr = Mid(nabor_cifr, 2, Len(nabor_cifr) - 1) & Mid(nabor_cifr, 1, 1)
            stroka = nabor_cifr
        Next
        'строку в массив с разделением на слова
        Dim Arry() As String = stroka_temp.Split(" ")
        'удаляем повторяющиеся комбинации
        Dim NewArry As IEnumerable(Of String) = Arry.Distinct()
        'выводим что получилось
        oExcel = New Excel.Application
        oBook = oExcel.Workbooks.Add 'добавляем в Excel новую книгу
        oSheet = oBook.Worksheets(1)
        oExcel.Visible = True 'показываем объект Excel
        'заполняем поля 
        For i As Integer = 0 To NewArry.Count - 1
            c1 = "B" & (i + 1).ToString
            oSheet.Range(c1).Value = NewArry(i)
        Next
        oExcel = Nothing
 
        'MsgBox(Join(NewArry.ToArray, ", "))
    End Sub
    'сдвигаем по очереди каждую цифру вправо по позициям
    Sub Sdvig_rite()
        For i As Integer = 1 To Len(nabor_cifr)
            c1 = Mid(nabor_cifr, i, 1)
            Select Case i
                Case 1 'первая позиция
                    c2 = Mid(nabor_cifr, 2, Len(nabor_cifr) - 1)
                Case Len(nabor_cifr) 'последяя позиция
                    c2 = Mid(nabor_cifr, 1, Len(nabor_cifr) - 1)
                Case Else 'любая в середине
                    c2 = Mid(nabor_cifr, 1, i - 1) & Mid(nabor_cifr, i + 1, Len(nabor_cifr) - i + 1)
            End Select
            c3 = c1 & c2
            stroka = stroka & " " & c3
            For n As Integer = 1 To Len(c2)
                If n > i Then
                    c3 = Mid(c2, 1, n - 1) & c1 & Mid(c2, n, Len(c2) - n + 1)
                    stroka = stroka & " " & c3
                End If
            Next
            c3 = c2 & c1
            stroka = stroka & " " & c3
        Next
    End Sub
 
End Class
1
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 93
09.01.2013, 13:10 9
Spread, подскажи, в какой программе этот код скомпилировать и запустить? В microsoft visual basic 6.0 не работает.
0
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
09.01.2013, 13:21  [ТС] 10
В 10
0
09.01.2013, 13:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2013, 13:21
Помогаю со студенческими работами здесь

Генерирование и перемешивание чисел
Необходимо сгенерировать бесповторные числа определенного количества (=количеству букв в слове) и...

Перемешивание
Сортировать я умею. А как намерено перемешать записи? При каждом новом исполнении запроса на...

Перемешивание массива
Здравствуйте, не понимаю как перемешать массив. Напишите пожалуйста(ссылки кидать не надо, уже...

Обрезка и перемешивание
Здравствуйте, требуется помощь Есть текст: Вопрос1?; Вопрос2?; Вопрос3?; Вопрос4? Вступай в...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru