Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 22:09   #1
ангелочик
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 13
По умолчанию в делфи написать программу счисления

написать программу , осуществляющую перевод чисел из десятичной системы счисления в систему счисления с основанием (n).
ангелочик вне форума Ответить с цитированием
Старый 16.11.2010, 23:53   #2
Onni
Форумчанин
 
Аватар для Onni
 
Регистрация: 28.12.2008
Сообщений: 134
По умолчанию

Это не мой текст программы и если вдруг автор увидит своё творение, то заранее прошу прощения.
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    // Исходное число в десятичной системе счисления.
    // Десятичная точка обозначается знаком запятая: ','
    edDecimalNum: TEdit;
    // Число в заданной системе счисления,
    // получившееся в результате прербразования.
    edXNum: TEdit;
    // Число задающее основание системы счисления.
    edBase: TEdit;
    // Точность преобразования - количество знаков после запятой в результирующем
    // представлении числа.
    edPrecision: TEdit;
    // Кнопка по нажатию на которую происходит преобразование.
    BtnTranslate: TButton;
    //Ниже - надписи для перечисленных выше элементов.
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    // Обработчик события onClick для BtnTranslate.
    procedure BtnTranslateClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function IntToDigit(aVal : Byte) : String;
begin
  case aVal of
    0..9 : Result := IntToStr(aVal);
    10   : Result := 'A';
    11   : Result := 'B';
    12   : Result := 'C';
    13   : Result := 'D';
    14   : Result := 'E';
    15   : Result := 'F';
  end;
end;
 
function DecimalToXStr (aBase : Byte; Precision : Byte; aVal : Extended) : String;
var
  Val : Extended;
  IntVal : Int64;
  FracVal : Extended;
  StrInt : String;
  StrFrac : String;
  i : Integer;
begin
  // Получаем целую и дробную части числа.
  IntVal := Trunc(aVal);
  FracVal := Frac(aVal);
 
  //Переводим целую часть.
  StrInt := '';
  repeat
    StrInt := IntToDigit(IntVal mod aBase) + StrInt;
    IntVal := IntVal div aBase;
  until IntVal = 0;
 
  // Если дробная часть = 0, то перевод закончен.
  if FracVal = 0 then begin
    Result := StrInt;
    exit;
  end;
 
  //Переводим дробную часть. Точность - до Precision цифр после запятой.
  StrFrac := '';
  for i := 1 to Precision do begin
    Val := FracVal * aBase;
    StrFrac := StrFrac + IntToDigit(Trunc(Val));
    FracVal := Frac(Val);
    //Если дробная часть = 0, то перевод закончен.
    if FracVal = 0 then Break;
  end;
 
  Result := StrInt + ',' + StrFrac;
 
end;
 
procedure TForm1.BtnTranslateClick(Sender: TObject);
begin
  edXNum.Text := DecimalToXStr(
    StrToInt(edBase.Text),
    StrToInt(edPrecision.Text),
    StrToFloat(edDecimalNum.Text)
  );
end;
 
end.
Onni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите написать программу в делфи. (рекурсия) Snord Помощь студентам 6 31.05.2011 21:39
составить информационную моделель задачи и написать программу. делфи @leks@ Помощь студентам 1 17.10.2010 14:19
Задали написать программу в Делфи, а именно игру арканоид Mclaren Помощь студентам 17 27.04.2009 21:08