Показать сообщение отдельно
  #1  
Старый 24.05.2009, 13:07
Kiddie Kiddie вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 2
Репутация: 10
По умолчанию Задача с системами исчисления

Прошу помочь решить несколько вопросов.
Сама задача такова: необходимо зделать калькулятор систем исчисления, тоесть перевод вещественных чисел в разные сс(2\8\10\16) и обратно, а также их складывать вычитать и умножать. Выобор сс осуществляется нажатием на радиобаттом и таким образом числа в трех едитах меняются в другую сс. Такой вопрос: как зделать, что б после перевода чисел в другую сс(например в двоичную)числа складывались, омножались итд уже в выбраной системе счисления, а не определялись как десятичные(например двоичное число 1001 не определялось как тысяча один).
И второй вопрос, помогите найти ошибку в переводе в 16ричную систему(точнее ошибку не выбивает, а отображает только в одном эдите и не A B C D F, а непонятные символы.
Код:
procedure TForm1.RadioButton4Click(Sender: TObject);
var
result: string;
remainder: word;
c: char;
num: word;
result2: string;
remainder2: word;
c2: char;
num2: word;
result3: string;
remainder3: word;
c3: char;
num3: word;


begin
num:=strtoint(edit1.Text);
num2:=strtoint(edit2.Text);
num3:=strtoint(edit3.Text);

begin
result := '';
while num <> 0 do
begin
remainder := num mod 16;
num := num div 16;
If remainder = 10 then c:='A';
If remainder = 11 then c:='B';
If remainder = 12 then c:='C';
If remainder = 13 then c:='D';
If remainder = 14 then c:='E';
If remainder = 15 then c:='F';
result := c + result;

end;
edit1.Text := result;
end;

begin
result2 := '';
while num2 <> 0 do
begin
remainder2 := num2 mod 16;
num2 := num2 div 16;
If remainder = 10 then c:='A';
If remainder = 11 then c:='B';
If remainder = 12 then c:='C';
If remainder = 13 then c:='D';
If remainder = 14 then c:='E';
If remainder = 15 then c:='F';
result2 := c2 + result2;
end;
edit2.Text := result2;
end;

begin
result3 := '';
while num3 <> 0 do
begin
remainder3 := num3 mod 16;
num3 := num3 div 16;
If remainder = 10 then c:='A';
If remainder = 11 then c:='B';
If remainder = 12 then c:='C';
If remainder = 13 then c:='D';
If remainder = 14 then c:='E';
If remainder = 15 then c:='F';
result3 := c3 + result3;
end;
edit3.Text := result3;
end;

end;
Admin: Пользуемся тегами!
Ответить с цитированием