|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Девятиричная система счисления
Здравствуйте. Мне захотелось написать программу, которая выводит все числа девятеричной системы.Причём их должно быть 4657 штук. Ниже я привожу алгоритм, собственный разработанный, но он чего-то не работает. Помогите найти ошибку!
procedure TForm1.Button1Click(Sender: TObject); Var sc,i,a,b,c,d,k:integer; begin sc:=0; k:=0; // Обнуляем счётчик и генератор чисел While sc<4657 do//если счётчик не достиг задан. числа, вып. процедура. Begin k:=k+1;//собственно перебор чисел if k<10000 then// отделения чисел по ... тысячам Begin d:=k div 1000; k:=k-d*1000; End; if k<1000 then//...сотням Begin c:=k div 100; k:=k-c*100; End; if k<100 then//...десяткам Begin b:=k div 10; k:=k-b*10; End; if k<10 then//... единицам Begin a:=k div 1; End; if (a>=1) and (a<9) and (b>=1) and (b<9) and (c>=1) and (c<9) and (d>=1) and (d<9) then// если числа меньше 9 и 0, то записыв. в редактор Begin sc:=sc+1; Memo1.Lines.Add(IntToStr(k)); End; End; end; |
#2
|
|||
|
|||
Если я правильно помню, то перевод числа из 10-ной системы в любую другую реализуется через остаток от деления. Ты поше просто еправильным путем. Тебе надо написать функцю перевода из 10ной системы в 9ную, а потом просто в цикле ее вызвать.
Код:
function DecTo9(ADec : Integer) : String; var L : Integer; begin Result := ''; L := ADec mod 9; Result := IntToStr(L) + Result; While ADec > 0 Do Begin ADec := ADec div 9; L := ADec mod 9; Result := IntToStr(L) + Result; End; end; Если нигде не ошибся, то далее все просто: Код:
var I : Integer; begin For I := 0 To 4657 Do Memo1.Lines.Add(DecTo9(I)); end; |
#3
|
|||
|
|||
Огромное спасибо.Очень выручили.
|