IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Калькулятор
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Помогите плз с програмкой. Нужно сделать калькулятор считающий в разных системах счисления. В десятично я сделал, а как реализовать в других понятия не имею. Подскажите как лучше и проще это сделать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Спасибо за помощь, но опять косячок. При вводе дробного значения например в 16-иричной сс с одним знаком после запятой, результат всегда получается *.0625, с двумя знаками после запятой *.06640625 и т.д. причём символ может быть любой не обязательно цифра.

Сообщение отредактировано: antonioSP -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(antonioSP @ 19.05.2006 17:14)
Спасибо за помощь, но опять косячок.
Ну само собой lol.gif Умножить-то найденную степень на значение соотв. разряда забыли...

function ToDec(n:string; radix:longint):real;
var
_int: longint;
_frac: real;

s: string;
i, p: byte;
const
digit: string[16]='0123456789ABCDEF';

begin
p := pos('.', n);
if p = 0 then s := n
else s := copy(n, 1, p - 1);

_int := 0; _frac := 0.0;

while s[1] = '0' do delete(s, 1, 1);
for i := 1 to length(s) do
_int := _int * radix + pos(n[i], digit) - 1;

if (p <> 0) and (p < length(n)) then begin

s := copy(n, p + 1, 255);
while s[length(s)] = '0' do delete(s, length(s), 1);

for i := 1 to length(s) do
_frac := _frac + pred(pos(upcase(s[i]), digit)) / stepen(radix, i); // <--- Тут ...

end;
ToDec := _int + _frac;
end;
 К началу страницы 
+ Ответить 

Сообщений в этой теме
antonioSP   Калькулятор   4.05.2006 17:17
volvo   В чем именно у тебя затруднения? Как это оформить,…   4.05.2006 18:10
antonioSP   Мне как раз не ясно как реализовать, какими алгори…   4.05.2006 22:45
lapp   Или же работать в заданной системе, или переводит…   5.05.2006 5:48
volvo   Погоди... Насколько я помню, на форуме уже поднима…   4.05.2006 22:52
antonioSP   А можно ли работать в в одной и той же системе счи…   5.05.2006 23:16
lapp   А можно ли работать в в одной и той же системе сч…   6.05.2006 11:32
antonioSP   Прошу помощи в поиске ошибке в процедуре ToDec для…   19.05.2006 16:38
volvo   antonioSP, ошибка далеко не там, где тебе кажется:…   19.05.2006 16:47
volvo   А вообще, я бы сделал так: function ToDec(n:string…   19.05.2006 17:15
antonioSP   Спасибо тебе большое, правда функция не совсем кор…   19.05.2006 19:47
volvo   Да, правильно. Не добавил еще одно условие: functi…   19.05.2006 20:03
antonioSP   Спасибо за помощь, но опять косячок. При вводе дро…   19.05.2006 21:14
volvo   Спасибо за помощь, но опять косячок.Ну само собой …   27.05.2006 23:47
antonioSP   Это я уже заметил и исправил :) Но у меня опять …   28.05.2006 23:00
volvo   Аргумент передаешь в градусах? А Delphi вообще-то …   28.05.2006 23:14
antonioSP   :) Не знал что в Делфях в радианах. Спасибо тебе v…   28.05.2006 23:28


Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.12.2021 17:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name