
16.12.2009, 20:30
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме: 140714
Репутация:
29
|
|
Сообщение от MRAK9
помогите пожалуйста.....
может у кого-нить есть полный двоичный сумматор на delphi?
срочно надо.....
Код:
function CheckNumber(Number: string): boolean;
var
i: integer;
begin
Result := false;
for i := 1 to length(Number) do
case Number[i] of
'0','1':;
else
exit;
end;
Result := true;
end;
function BinaryAdd(N1, N2: string): string;
var
tmp1, tmp2: byte;
i: integer;
flag: boolean;
begin
// зададим начальные параметры
Result := '';
flag := false;
// если в строках не только 0 и 1
if (not(CheckNumber(N1))) or (not(CheckNumber(N2))) then
exit;
// сделаем обе строки одинаковой длины, дополнив одну из них нулями
tmp1 := length(N1);
tmp2 := length(N2);
if (tmp1 > tmp2) then
for i := 1 to (tmp1 - tmp2) do
N2 := '0' + N2;
if (tmp1 < tmp2) then
for i := 1 to (tmp2 - tmp1) do
N1 := '0' + N1;
// будем посимвольно обрабатывать строки
for i := length(N1) downto 1 do
begin
tmp1 := StrToInt(N1[i]) + StrToInt(N2[i]);;
if flag then
inc(tmp1);
tmp2 := tmp1 mod 2;
Result := IntToStr(tmp2) + Result;
tmp2 := tmp1 div 2;
if (tmp2 = 0) then
flag := false
else
flag := true;
end;
// если осталась неперенесенная единица
if flag then
Result := '1' + Result;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tmp: string;
begin
tmp := BinaryAdd(edit1.Text, edit2.Text);
ShowMessage(tmp);
end;
Последний раз редактировалось StealthMaster; 16.12.2009 в 20:33..
|
|
|