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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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: Пользуемся тегами!

Последний раз редактировалось Admin, 24.05.2009 в 13:10.
Ответить с цитированием
  #2  
Старый 24.05.2009, 14:40
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Вот так можно переводить из 10ой в 16ую
Код:
function Dec2Hex(const Source: Integer): String;
var
 Dec: Integer;
 Hex: String;
begin
 Dec := Source;

 Hex := '';
  while Dec <> 0 do
  begin
    case (Dec mod 16) of
     10: Hex := 'A' + Hex;
     11: Hex := 'B' + Hex;
     12: Hex := 'C' + Hex;
     13: Hex := 'D' + Hex;
     14: Hex := 'E' + Hex;
     15: Hex := 'F' + Hex;
     else Hex := IntToStr(Dec mod 16) + Hex;
    end;
   Dec := Dec div 16; 
  end;
 Result := Hex;
end;

А для сложения в других системах делай так: смотришь в какой системе у тебя числа, переводишь их в 10ую, производишь операции и делаешь перевод получившегося числа обратно
Ответить с цитированием
  #3  
Старый 24.05.2009, 15:12
Kiddie Kiddie вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 2
Репутация: 10
По умолчанию

Ошибку с переводом 16ричную сс я нашел, подскажите еще: как реализовать, что б при нажатии на радиобаттом переводило в нужную сс, например если в эдитах осталось двоичное число после перевода, то перевести, допустим, в 16ричное, не определяя ето двоичное число как десятиричное
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter