Генерация 9 значных чисел... |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Генерация 9 значных чисел... |
GLuk |
Сообщение
#21
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Ты юзаешь глобальную переменную (описанную как i) во всех процедурах - оттого он и крутит его бесконечно...а комбинаций все-таки ни больше ни меньше, хотя хрен его знает...
|
reill |
Сообщение
#22
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Да с этим я разобрался все дописал вот что вышло:
Код program cz_new; uses crt; type masiv=array[1..9] of byte; const chisla: array[1..10] of longint = & #40;123456789,123456780,123456709,123456089,123450789,123406789,123056789,120456 789,103456789, 234567890); var c: masiv; b:longint; i,j,k: byte; f: integer; fl: text; procedure pr(var a:longint); var obr: string; begin str(a,obr); for i:=1 to 9 do begin val(copy(obr,i,1),c[i],f); writeln(c[i]); end; end; procedure perest; var st,st2: string; begin f:=c[1]; for i:=2 to 9 do c[i-1]:=c[i]; c[9]:=f; if c[1]=0 then begin f:=c[1]; for i:=2 to 9 do c[i-1]:=c[i]; c[9]:=f; end; st2:=''; for i:=1 to 9 do begin str(c[i],st); st2:=st2+st; end; val(st2,b,f); end; begin clrscr; assign(fl,'out.txt'); rewrite(fl); for j:=1 to 10 do begin pr(chisla[j]); for k:=1 to 8 do begin perest; if b mod 11 = 0 then writeln(fl,B); end; end; close(fl); end. Но вот маза которую я понял, когда посмотрел на результаты - то что этими 10 числами не отделаешься, цифры ведь могут стоять не только подряд, а у меня они попорядку меняются местами... обыдно, надо додумывать "задачку".... >:( Сообщение отредактировано: volvo - |
GLuk |
Сообщение
#23
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
О чем я и говорил, когда писал о 5120 комбинациях, т.к. для каждого разряда выходит + степень => 2^9=512, а чисел всего 10 - поэтому 5120 комбинаций : Числа, которые ты описываешь как массив из LongInt'ов, лучше описать как String.
|
reill |
Сообщение
#24
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Зачем стрингом???
Ну зацени свой вариант, надеюсь он без Асма... |
GLuk |
Сообщение
#25
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Данная прога генерить все комбинации из набора "23456789", потом просто подставляется единица, описанная как FN. Чтобы получить действительно все комбинации для "123456789", единицу надо 9 раз поменять с другими цифрами. Думаю теперь уж доделаешь сам
А комбинаций кстати всего - 362.880 для одного набора, а для девяти 3.265.920. Поначалу не так посчитал, через факториал надобно... Сразу оговорюсь - алгоритм опять таки страшный, но рабочий и считает в 327.987 раз быстрее, чем предыдущий... Код Uses Crt; Const S:array[1..9] of String = ('123456789','103456789','120456789', '123056789','123406789','123450789', '123456089','123456709','123456780'); Function Fact(N:LongInt):LongInt; var T:LongInt; i:LongInt; begin T:=1; For i:=1 to N do T:=T*i; Fact:=T; end; Const O:String = '6789'; L:String = '2345'; FN:Char = '1'; K:Char = #1; N=3; Var T,i,Sum1,Sum2:LongInt; j:Byte; F:Text; V:LongInt; Code:Integer; Procedure Form2; var i,j:Integer; Tm:String; begin Tm:=L; For j:=1 to N+1 do begin For i:=1 to 3 do begin Val(FN+L+O,V,Code); If V MOD 11 = 0 then WriteLn(F,V); K:=L[N+1]; L[N+1]:=L[N]; L[N]:=K; Val(FN+L+O,V,Code); If V MOD 11 = 0 then WriteLn(F,V); If Odd(i) then begin K:=L[N+1]; L[N+1]:=L[N]; L[N]:=K; end; K:=L[2]; L[2]:=L[N+1]; L[N+1]:=K; end; L:=Tm; K:=L[N-j+2]; L[N-j+2]:=L[1]; L[1]:=K; end; end; Procedure Form1; var i,j:Integer; Tm:String; begin Tm:=O; For j:=1 to N+1 do begin For i:=1 to 3 do begin Form2; K:=O[N+1]; O[N+1]:=O[N]; O[N]:=K; Form2; If Odd(i) then begin K:=O[N+1]; O[N+1]:=O[N]; O[N]:=K; end; K:=O[2]; O[2]:=O[N+1]; O[N+1]:=K; end; O:=Tm; K:=O[N-j+2]; O[N-j+2]:=O[1]; O[1]:=K; end; end; Begin ClrScr; Assign(F,'output.txt'); ReWrite(F); Form1; Close(F); End. Сообщение отредактировано: volvo - |
reill |
Сообщение
#26
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Чего-то твоя прога у меня ничего не делает файл создает и ничего не пишет....
Ты уж доделай свой шедевр)) А потом хвастай |
GLuk |
Сообщение
#27
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Доделывать я ничего не буду. Вообще ты просил алгоритм, так вроде он есть да и кусок проги - генерящей какое-то количество номеров.
Ты попробуй протрейсить и посмотреть что она делает - она генерит комбинации для набора 123456789, причем изменяются только цифры 23456789. А когда видишь прогу в мессаге, то сначал почитай то, что в начале написано, а затем запускай. Вообщем посмотри и подумай, а пустой файл и должен быть пустым... |
reill |
Сообщение
#28
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Не парься.... Я читал и месейдж и саму прогу...
Неуже ли ты меня совсем за лоха держишь...Просто в лом вникать было в твои творения, ты бы хоть кометариев нацарапал... |
reill |
Сообщение
#29
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Да чуть не забыл- не забудь раздел называется не алгоритмы, а задачи... :P
|
GLuk |
Сообщение
#30
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Цитата Не парься.... Я читал и месейдж и саму прогу... Неуже ли ты меня совсем за лоха держишь...Просто в лом вникать было в твои творения, ты бы хоть кометариев нацарапал... Никого я за лоха не держу, а по поводу проги - ты понял КАК она это делает? Цитата Да чуть не забыл- не забудь раздел называется не алгоритмы, а задачи... А вот по поводу этого: ты сначала просто просил подкинуть идей для генера. А потом вишь я ору, держу кого попало за лохов, хвастаюсь. Смотри как люди общаются (в плане вежливо, исключая частные случаи). Козлом и засранцем я и сам мог тебя назвать, но этого не сделал. Типа выбирай выражения/фильтруй базар/кроши батон и т.п. |
reill |
Сообщение
#31
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Какое трогательное сообщение.... Я не знал что это тебя так сильно заденит :-[ Извини пожалуйста :'( ;)
|
GLuk |
Сообщение
#32
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Прогу-то сдал?
|
reill |
Сообщение
#33
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
На следующей недели здаю...С твоим вариантом ещё даже не разбирался... времени нет(((, но ты не бойся твои глюки все найду))) :P
|
reill |
Сообщение
#34
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Так я вот не понял одного ты чего это за прогу написал???
Твои геморно закрученные алгоритмы перестановки я не трогаю, может они и составленны путем сложных интегрально - факториальных вычислений, (хотя это врядли, уж очень мои напаминают) Но зачем тебе массив типа стринг из 9 элементов, если ты с ним нифига не делаешь, а меняешь местами другие переменные Или я чего-то не догнал, и ты имел ввиду что я их туда прилеплю, каким-то макаром??? Тогда хоть идею расскажи(напиши просто ход твоего алгоритма, так ничего не понятно)... Я весь внимания!!! |
GLuk |
Сообщение
#35
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Дык, все же очень просто, дебагом не пробовал пользоваться. Проследи за изменением локальных переменных по прозвищу Tm в процедурах Form1/2.
|
reill |
Сообщение
#36
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Ну вот вчера ходил её здавать...
Все оказалось на много хуже чем я думал/ Ни мой ни твой вареант не пошел так как они оба "используют перебор", а нужно исходить из сумм цифр на четных и не четных местах. Зато она перед мной извинилась и сказала что вычеркнет это задание, так как сама решала его день, и зделала только половину)) Но если я его доведу до ума то это будет засчитанно как курсовая.. Она дала мне исходничек со своим вариантом перестановки чисел для составления сумм, скоро ввыложу его( как сканер подключу..) Такие проги.... ;D |
GLuk |
Сообщение
#37
|
Профи Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: 0 |
Выкладывай скорее, что же это за прога, если УЧИТЕЛЬ писал 1/2 оной целый ДЕНЬ!!! :o :D
Какой способ использует учитель??? Вроде все прикинул :( |
reill |
Сообщение
#38
|
Пионер Группа: Пользователи Сообщений: 52 Репутация: 0 |
Способ у нее как раз по условию она подбирает комбинации сумм цифр как в условии написанно... блин ее этот алгоритм на 1.5 листика без бутылки не разберешся, сегодня вечером положу...
|
Текстовая версия | 21.12.2024 21:53 |