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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2008, 09:36   #1
Danilyuk
 
Аватар для Danilyuk
 
Регистрация: 21.01.2008
Сообщений: 8
По умолчанию Подскажите почему не работает программа???

(*
Function Dec2Hex (num: Word): String; { перевод из 10-ичной в 16-ичную }
Function Dec2Bin (num: word): String; { перевод из 10-ичной в 2-ичную }
Function Hex2Dec (hs:string): longint; { перевод из 16-ичной в 10-ичную }
Function Bin2Dec (S: String): longint; { перевод из 2-ичной в 10-ичную }
*)

Function Dec2Hex (num: Word): String;
var result: string;
remainder: word;
c: char;
begin
result := '';
while num <> 0 do
begin
remainder := num mod 16;
num := num div 16; { или num := num shr 4 }
if remainder < 10 then
c := chr (remainder + ord ('0'))
else
c := chr (remainder + ord ('A') - 10);
result := c + result;
end;
Dec2Hex := '$' + result
end;

Function Dec2Bin (num: word): String;
var result: string;
remainder: word;
c: char;
begin
result := '';
while num <> 0 do
begin
remainder := num mod 2;
num := num div 2; { или num := num shr 1 }
c := chr (remainder + ord ('0'));
result := c + result;
end;
Dec2Bin := result
end;

Function Hex2Dec (hs:string): longint;
var
res,k: longint;
r,i: word;
c: char;
begin
res := 0;
k := 1;
for i := length (hs) downto 1 do
begin
c := UpCase (hs[i]);
case c of
'A'..'F': r := ord(c) - (ord('A') - 10); { ord (c) - 55 }
'0'..'9': r := ord(c) - ord('0'); { ord (c) - 48 }
else break
end;
inc (res, r * k); { res := res + r * k}
k := k * 16; { или k := k shl 4 }
end;
Hex2Dec := res;
end;

Function Bin2Dec (S: String): longint;
var
i, bit: word;
p, result: longint;
Begin
result := 0;
p := 1;
for i := length (S) downto 1 do
begin
bit := ord (S[i]) - ord ('0');
inc (result, bit * p);
p := p * 2; { или p := p shl 1 }
end;
Bin2dec:=result;
End;

begin
writeln (dec2bin (2004));
writeln (dec2hex (2004));
writeln (hex2dec ('fff0'));
writeln (bin2dec ('11111010100'))
end.
Кто не рискуе - того не ложат в гроб из красного дерева
Danilyuk вне форума Ответить с цитированием
Старый 25.01.2008, 09:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
перевод из 10-ичной в 16-ичную
IntToHex
Цитата:
перевод из 16-ичной в 10-ичную
StrToInt

А из строки в которой 2-ичное число записано мона получитб десятичное так:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 function q(s:string):integer;
 var i:integer;
 begin result:=0;
    for i:=1 to length(s) do begin
     if s[i]='1' then result:=result or 1;
     if i<length(s) then  result:=result shl 1;
    end;
 end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
caption:=inttostr(q(Edit1.Text));
end;

end.
I'm learning to live...

Последний раз редактировалось Stilet; 25.01.2008 в 10:12.
Stilet вне форума Ответить с цитированием
Старый 25.01.2008, 10:15   #3
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

result убери из объявления переменных
alexBlack вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите где ошибки? Не работает программа на Паскале ЯншинаВера Помощь студентам 1 21.05.2008 19:47
Почему моя программа РАБОТАЕТ!!! aesoem Общие вопросы Delphi 3 09.05.2008 23:50
Почему не работает код? Kashp Общие вопросы Delphi 3 09.08.2007 17:33