Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.05.2008, 19:56
Nisan Nisan вне форума
Прохожий
 
Регистрация: 18.05.2008
Сообщения: 6
Репутация: 10
По умолчанию Девятиричная система счисления

Здравствуйте. Мне захотелось написать программу, которая выводит все числа девятеричной системы.Причём их должно быть 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  
Старый 19.05.2008, 20:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,024
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если я правильно помню, то перевод числа из 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  
Старый 19.05.2008, 22:20
Nisan Nisan вне форума
Прохожий
 
Регистрация: 18.05.2008
Сообщения: 6
Репутация: 10
По умолчанию

Огромное спасибо.Очень выручили.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter