Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

RoundEx [Delphi -> C++Builder]

Привет всем.

Кто-нибудь, переведите эту функцию по округлению из Delphi на
C++Builder.

function RoundEx(const X, N : Extended): Extended;
{N : 1 - до целых, 10 - до десятых, 100 - до сотых...}
var
ScaledFractPart, Temp : Extended;
begin
ScaledFractPart := Frac(X) * N;
Temp := Frac(ScaledFractPart);
ScaledFractPart := Int(ScaledFractPart);
if Temp >= 0.5 then ScaledFractPart := ScaledFractPart + 1;
if Temp <= -0.5 then ScaledFractPart := ScaledFractPart - 1;
Result := Int(X) + ScaledFractPart / N;
end;

--
С уважением,
Feniks mailto: feni***@b*****.ua
Номер выпуска : 2791
Возраст листа : 198 (дней)
Количество подписчиков :
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/120360
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Feniks Wed, 7 Apr 2004 16:34:50 +0300 (#120360)

 

Ответы:

-=[Hi!]=-
7 апреля 2004 г. /среда 16:34:50/ Feniks |E-Mail: <mailto:feni***@b*****.ua>|
в мессаге <<RoundEx [Delphi -> C++Builder]>> накрапал:
[B~E~G~I~N~>

function RoundEx(const X, N : Extended): Extended;
{N : 1 - до целых, 10 - до десятых, 100 - до сотых...}
var
ScaledFractPart, Temp : Extended;
begin
ScaledFractPart := Frac(X) * N;
Temp := Frac(ScaledFractPart);
ScaledFractPart := Int(ScaledFractPart);
if Temp >= 0.5 then ScaledFractPart := ScaledFractPart + 1;
if Temp <= -0.5 then ScaledFractPart := ScaledFractPart - 1;
Result := Int(X) + ScaledFractPart / N;
end;

[E|.|N|.|D|.>

double RoundEx( double X,N)
{ double ScaledFractPart, Temp;
ScaledFractPart = Frac(X) * N;
Temp = Frac(ScaledFractPart);
ScaledFractPart = Int(ScaledFractPart);
if (Temp >= 0.5) {ScaledFractPart = ScaledFractPart + 1;};
if (Temp <= -0.5) {ScaledFractPart = ScaledFractPart - 1;};
RoundEx = Int(X) + ScaledFractPart / N;
return RoundEx; //***
}
*** - может и не нужно...

Ответить   -=BorMaN=- Wed, 7 Apr 2004 19:34:43 +0300 (#120500)

 

Доброго времени суток, -=BorMaN=-.

Wednesday, April 7, 2004, 8:34:43 PM:

Ну незнаю как насчет BCB, но в синтаксис Си это не укладывается.
(Если то, что предложил БорМаН работает - плз. скажите)
на самом деле все намного проще:

double RoundEx(double X,double N)
{
double ScaledFractPart, Temp;
ScaledFractPart = X * N;
Temp = modf(ScaledFractPart,&ScaledFractPart);
if (Temp >= 0.5) ScaledFractPart = ScaledFractPart + 1;
if (Temp <= -0.5) ScaledFractPart = ScaledFractPart - 1;
return ScaledFractPart;
};

--
С бестами и регардами
Havoc
mailto:hav***@i*****.ru
Номер выпуска : 2802
Возраст листа : 199 (дней)
Количество подписчиков :
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/120718
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Havoc Thu, 8 Apr 2004 03:02:44 +0400 (#120718)

 

Здравствуйте, Havoc.

Вы писали 8 апреля 2004 г. в 2:02:44:

Борман, если б так все было просто, я тогда и сам так написал :-).
Неа... не работает твое творение. Не находит функции Frac и Int.

Havoc, можешь дать комментарии к modf ? И почему ты другие строки
по выкидывал ?

Цитирую из хелпа по Frac и Int:
FRAC
Returns the fractional part of a real number.

Unit
System

Category
arithmetic routines

function Frac(X: Extended): Extended;

Description

The Frac function returns the fractional part of the argument X.
X is a real-type expression. The result is the fractional part of X; that is,
Frac(X) = X - Int(X).
INT
Returns the integer part of a real number.

Unit
System

Category
arithmetic routines

function Int(X: Extended): Extended;

Description

Int returns the integer part of X; that is, X rounded toward zero. X is a real-type
expression.
--
С уважением,
Feniks mailto: feni***@b*****.ua
Номер выпуска : 2807
Возраст листа : 199 (дней)
Количество подписчиков : 386
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/120948
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Feniks Thu, 8 Apr 2004 10:25:01 +0300 (#120948)

 

-=[Дрова!]=-
8 апреля 2004 г. /четверг 10:25:01/ Feniks |E-Mail: <mailto:feni***@b*****.ua>|
в мессаге <<RoundEx [Delphi -> C++Builder]>> накрапал:
[B~E~G~I~N~>
Feniks> Здравствуйте, Havoc.
Feniks> Вы писали 8 апреля 2004 г. в 2:02:44:

~~~< Message on address 0x00000000 cannot be read (written) >[E|.|N|.|D|.>

Ну, если так, то конечно... В смысле про INT и FRAC - я не вкурил эти функции
:-(

Про modF:

[ BCB HELLp >

Prototype

double modf(double x, double *ipart);

long double modfl(long double x, long double *ipart);

Description

Splits a double or long double into integer and fractional parts.

modf breaks the double x into two parts: the integer and the fraction. modf stores
the integer in ipart and returns the fraction.

modfl is the long double version; it takes long double arguments and returns
a long double result.

Return Value

modf and modfl return the fractional part of x.

Ответить   -=BorMaN=- Thu, 8 Apr 2004 11:55:15 +0300 (#121017)

 

Доброго времени суток, Feniks.

Thursday, April 8, 2004, 11:25:01 AM:

Z = modf(X,&Y)

modf разбивает число типа double на целую и дробную составляющие.
X - это число которое надо разбить.
Z - дробная часть
Y - целая часть(надо передавать указатель на память)

А зачем нужны другие строки????

Я чего-то не понял на каком языке ты хочеш это написать.
Процитирован был хелп по Делфи/Паскалю, в Сях таких функций нет,
небыло и наверное не будет, их заменяет "modf".

--
С бестами и регардами
Havoc
mailto:hav***@i*****.ru
Номер выпуска : 2810
Возраст листа : 200 (дней)
Количество подписчиков : 386
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/121550
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Havoc Fri, 9 Apr 2004 03:26:59 +0400 (#121550)

 

Здравствуйте, Havoc.

Вы писали 9 апреля 2004 г. в 2:26:59:

Спасибо за разъяснение.

Я хелп привел из Делфи. А С++ я не знаю, только немного знаю С++Билдер
из-за его схожести оболочки ИДЕ с ДЕлфи, а сам С++ только сейчас
потихоньку учу по возможности времени.
Написать эту функцию по округлению я хочу для Билдера. На Делфи я ее
благополучно написал, вот теперь нужда появилась ее использовать в
проекте на Билдере, а вставлять паскалевский модуль с этой ф-ей в
проект уж больно не хочется.

Большое спасибо за помощь.

--
С уважением,
Feniks mailto: feni***@b*****.ua
Номер выпуска : 2812
Возраст листа : 200 (дней)
Количество подписчиков : 388
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/121717
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Feniks Fri, 9 Apr 2004 10:01:41 +0300 (#121717)