Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА? / 25 сообщений из 55, страница 1 из 3
08.04.2008, 10:18
    #35241643
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Господа программеры!
Помогите пожста с решением проблемы (для меня-глобальной)

Есть 10 -ти значное число, состоящее только из цифр от 1 до 5.

Вопрос: каким образом определить кол-во и вывести на экран (желательно сохранить в текстовом файле) все возможные варианты 10-ти значных чисел из данного набора цифр??????
Ну, например:
1111111111
2111111111
3111111111
4111111111
5111111111
1211111111
1311111111
1411111111
1511111111

и т.д.

Буду очень вам благодарен.
...
Рейтинг: 0 / 0
08.04.2008, 10:24
    #35241665
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979

Вопрос: каким образом определить кол-во и вывести на экран
Это два вопроса.
Количество - это из комбинаторики. 5^10 =9765625 .
Вы уверены ,что хотите вывести на экран 9765625 строк ?
...
Рейтинг: 0 / 0
08.04.2008, 10:59
    #35241786
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Уверен, а я думал что комбинаций больше: 5555555555-1111111111=4444444444 - или это не верно? И как эти варианты можно сохранить в текстовом файле?
...
Рейтинг: 0 / 0
08.04.2008, 11:08
    #35241824
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Есть такая наука — комбинаторика.
Есть такое понятие — «размещения с повторениями».
Есть такая формула —
.
...
Рейтинг: 0 / 0
08.04.2008, 11:16
    #35241855
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
я профан в этих вопросах, поэтому к вам и обратился :-)
...
Рейтинг: 0 / 0
08.04.2008, 11:19
    #35241868
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979как эти варианты можно сохранить в текстовом файле?
Как как. Через гугль по запросу «Переборные алгоритмы».
...
Рейтинг: 0 / 0
08.04.2008, 11:31
    #35241918
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Я извиняюсь за свой тупизм, можно "на пальцах" объяснить?
...
Рейтинг: 0 / 0
08.04.2008, 11:39
    #35241951
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Я так понял мне нужно вот это?

Последовательности
Предположим, нам нужно вывести в Textbox все последовательности длины N из чисел 1, 2, 3, ..., M. Первая последовательность будет иметь следующий вид:

1, 1, 1, ..., 1

, а последняя:

M, M, M, ..., M.

Всего таких последовательностей будет M ^ N.

Пусть последовательность находится в одномерном массиве X. Создадим процедуру NextS, которая будет генерировать последовательность. Её нужно будет вызвать M ^ N раз. В процедуре NextS нужно перебрать все N знаков последовательности, начиная с последнего. Если знак равен M, то присваиваем ему значение 1, в ином случае увеличиваем его на единицу и выходим из цикла.
Код: plaintext
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.
Dim M As Integer
Dim N As Integer
Dim X() As Integer

Private Sub Sequences()
Dim i As Integer
Dim j As Integer

M = CInt (InputBox ("Введите M"))
N = CInt (InputBox ("Введите N"))
ReDim X(N)

txtOut.Text = ""

For i =  1  To N
       X(i) =  1 
Next
Yes = False
For i =  1  To M ^ N
       For j =  1  To N
txtOut.Text = txtOut.Text & CStr(X(j))
       Next
       txtOut.Text = txtOut.Text & vbCrLf
       NextS
Next
End Sub

Private Sub NextS()
Dim i As Integer

i = N
Do While (i >  0 ) And (X(i) = M)
X(i) =  1 
i = i -  1 
Loop
If i >  0  Then (i) = X(i) +  1 
End Sub

Все последовательности можно найти также и рекурсивным алгоритмом:

Dim M As Integer
Dim N As Integer
Dim X() As Integer

Private Sub SequencesRecursion()
M =  5 
N =  5 
ReDim X(N)

txtOut.Text = ""

SRGenerate  0 
End Sub

Private Sub SRGenerate (ByVal K As Integer)
Dim i As Integer
Dim j As Integer

If K = N Then
For i =  1  To N
txtOut.Text = txtOut.Text & CStr(X(i))
Next
txtOut.Text = txtOut.Text & vbCrLf
Else
For j =  1  To M
X(K +  1 ) = j
SRGenerate (K +  1 )
Next
End If
End Sub
...
Рейтинг: 0 / 0
08.04.2008, 11:49
    #35241998
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Во-первых, есть тег SRC VBA. А во-вторых времени на «пальцы» нет. В гугле достаточно полезной информации.
...
Рейтинг: 0 / 0
08.04.2008, 12:59
    #35242247
ЯпСтам
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979Я так понял мне нужно вот это?
Навряд ли, т.к. вот это: Дмитрий1979Всего таких последовательностей будет M ^ N. неверно, учитывая условия задачи (5х10=50 чёта маловато будет .
Вот накидал на коленке PHP-код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for ($i= 1111111111 ; $i<= 5555555555 ; $i++){
	$temp=strval($i); // преобразуем число в строку
	$flag= 1 ;
	for ($j= 0 ; $j<strlen($temp); $j++)
		if ($temp[$j]== 0  || $temp[$j]> 5 ) $flag= 0 ; // если в строке нет цифр  0 , 6 , 7 , 8 , 9 
	if ($flag== 1 ) print $i."<br>"; // ..то выводим на печать
}
Идея понятна? С VB не дружу, перекинь как-нибудь сам
...
Рейтинг: 0 / 0
08.04.2008, 13:08
    #35242281
Alexey Syrok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
ЯпСтамневерно, учитывая условия задачи (5х10=50 чёта маловато будет .
вроде бы 5 в десятой стапени
...
Рейтинг: 0 / 0
08.04.2008, 13:12
    #35242297
ЯпСтам
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Alexey Syrokвроде бы 5 в десятой стапени
А ну-да, конечно. Я ж говорю, с VB не дружу :))
...
Рейтинг: 0 / 0
08.04.2008, 13:24
    #35242349
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979Я так понял мне нужно вот это?

Последовательности
Предположим, нам нужно вывести в Textbox все последовательности длины N из чисел 1, 2, 3, ..., M. Первая последовательность будет иметь следующий вид:

1, 1, 1, ..., 1

, а последняя:

M, M, M, ..., M.

Всего таких последовательностей будет M ^ N.

Пусть последовательность находится в одномерном массиве X. Создадим процедуру NextS, которая будет генерировать последовательность. Её нужно будет вызвать M ^ N раз. В процедуре NextS нужно перебрать все N знаков последовательности, начиная с последнего. Если знак равен M, то присваиваем ему значение 1, в ином случае увеличиваем его на единицу и выходим из цикла.
Код: plaintext
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.
Dim M As Integer
Dim N As Integer
Dim X() As Integer

Private Sub Sequences()
Dim i As Integer
Dim j As Integer

M = CInt (InputBox ("Введите M"))
N = CInt (InputBox ("Введите N"))
ReDim X(N)

txtOut.Text = ""

For i =  1  To N
       X(i) =  1 
Next
Yes = False
For i =  1  To M ^ N
       For j =  1  To N
txtOut.Text = txtOut.Text & CStr(X(j))
       Next
       txtOut.Text = txtOut.Text & vbCrLf
       NextS
Next
End Sub

Private Sub NextS()
Dim i As Integer

i = N
Do While (i >  0 ) And (X(i) = M)
X(i) =  1 
i = i -  1 
Loop
If i >  0  Then (i) = X(i) +  1 
End Sub

Все последовательности можно найти также и рекурсивным алгоритмом:

Dim M As Integer
Dim N As Integer
Dim X() As Integer

Private Sub SequencesRecursion()
M =  5 
N =  5 
ReDim X(N)

txtOut.Text = ""

SRGenerate  0 
End Sub

Private Sub SRGenerate (ByVal K As Integer)
Dim i As Integer
Dim j As Integer

If K = N Then
For i =  1  To N
txtOut.Text = txtOut.Text & CStr(X(i))
Next
txtOut.Text = txtOut.Text & vbCrLf
Else
For j =  1  To M
X(K +  1 ) = j
SRGenerate (K +  1 )
Next
End If
End Sub


Что мне теперь с ЭТИМ делать? Как запустить-то? Скачать VB?
...
Рейтинг: 0 / 0
08.04.2008, 13:42
    #35242425
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979
Что мне теперь с ЭТИМ делать? Как запустить-то? Скачать VB?
VB скачать нельзя, его можно купить.
Но указанный вами код можно запустить из VBA.
...
Рейтинг: 0 / 0
08.04.2008, 13:51
    #35242469
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
А ка это сделать и что такое VBA? Прошу прощения за лоховатость в данном вопросе. Достал наверное уже всех...
...
Рейтинг: 0 / 0
08.04.2008, 14:08
    #35242530
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
А вы когда задавали вопрос в ветке Visual Basic на чем ожидали получить ответ?
Может быть вы все-таки расскажите про цель? Просто сейчас задача выглядит чисто теоретической.
...
Рейтинг: 0 / 0
08.04.2008, 14:41
    #35242638
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Нужно хешировать все комбинации - это второй этап - посложнее наверное будет

Так что такое VBA?
...
Рейтинг: 0 / 0
08.04.2008, 14:43
    #35242647
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Visual Basic for Application (Excel, Access, Word)
...
Рейтинг: 0 / 0
08.04.2008, 14:47
    #35242665
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979А ка это сделать и что такое VBA? Прошу прощения за лоховатость в данном вопросе. Достал наверное уже всех...

Так разобрался, что такое - VBA - это Visual Basik for Applications. Уже хорошо. А как дальше быть, как приведенный мною код реализовать в Exele?
...
Рейтинг: 0 / 0
08.04.2008, 16:01
    #35242999
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Количество вариантов = 10 цифр - значит 5 в степени 10 = 9765625 чисел. Размер файла =9,7 мб*10=97 мб
...
Рейтинг: 0 / 0
08.04.2008, 17:42
    #35243400
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979А ка это сделать и что такое VBA? Прошу прощения за лоховатость в данном вопросе. Достал наверное уже всех...

А можно еще и из VBS... ;)
...
Рейтинг: 0 / 0
09.04.2008, 23:48
    #35246832
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Люди, помогите.
Пробовал запускать приведенный код в VBA - пишет run-time error 424
Что это? Как в конце-то концов мне получить результат??? Очень надо!!!
...
Рейтинг: 0 / 0
10.04.2008, 09:10
    #35247038
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Вы приложите книжку с кодом.
...
Рейтинг: 0 / 0
10.04.2008, 09:59
    #35247173
Дмитрий1979
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Объясните пож-ста, что за книжка? Я в терминах не очень разбираюсь. Я ведь не программист и практически ничего не понимаю в этом, но вот нужда заставила сквозь программные дебри ползти...

Дмитрий1979
Код: plaintext
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.
Dim M As Integer
Dim N As Integer
Dim X() As Integer

Private Sub Sequences()
Dim i As Integer
Dim j As Integer

M = CInt (InputBox ("Введите M"))
N = CInt (InputBox ("Введите N"))
ReDim X(N)

txtOut.Text = ""

For i =  1  To N
       X(i) =  1 
Next
Yes = False
For i =  1  To M ^ N
       For j =  1  To N
txtOut.Text = txtOut.Text & CStr(X(j))
       Next
       txtOut.Text = txtOut.Text & vbCrLf
       NextS
Next
End Sub

Private Sub NextS()
Dim i As Integer

i = N
Do While (i >  0 ) And (X(i) = M)
X(i) =  1 
i = i -  1 
Loop
If i >  0  Then (i) = X(i) +  1 
End Sub

Все последовательности можно найти также и рекурсивным алгоритмом:

Dim M As Integer
Dim N As Integer
Dim X() As Integer

Private Sub SequencesRecursion()
M =  5 
N =  5 
ReDim X(N)

txtOut.Text = ""

SRGenerate  0 
End Sub

Private Sub SRGenerate (ByVal K As Integer)
Dim i As Integer
Dim j As Integer

If K = N Then
For i =  1  To N
txtOut.Text = txtOut.Text & CStr(X(i))
Next
txtOut.Text = txtOut.Text & vbCrLf
Else
For j =  1  To M
X(K +  1 ) = j
SRGenerate (K +  1 )
Next
End If
End Sub
...
Рейтинг: 0 / 0
10.04.2008, 12:14
    #35247747
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА?
Дмитрий1979Объясните пож-ста, что за книжка?
Книга Excel, где вы наваяли свой код.

Дмитрий1979Я ведь не программист и практически ничего не понимаю в этом
Может уже пора обратиться к тому кто понимает в этом?
Просто на ваши вопросы даже не понятно как отвечать, вы не знаете базовых вещей.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / КАК ОПРЕДЕЛИТЬ ВСЕ ВОЗМОЖНЫЕ ВАРИАНТЫ 10-ТИ ЗНАЧНОГО ЧИСЛА? / 25 сообщений из 55, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]