** Начинающий |
Отправлено: 24.05.2005, 13:57 |
|
Не зарегистрирован
|
Вообщем возникла такая проблема... как ни пробовал прописывать такое вычисление в С++ считается не верно, хотя Паскаль считает правильно. Помогите
CODE | t:=round(10+350*sqrt((2700000+r*95000)/s)); |
Где все переменные типу Инт.
Заранее благодарен. |
|
Guest |
Отправлено: 24.05.2005, 14:25 |
|
Не зарегистрирован
|
Для начала так
t:=round(10+350*sqrt((2700000.0+r*95000.0)/s));
А лучше явно привести к double. |
|
xim |
Отправлено: 24.05.2005, 14:35 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 143
|
Если версия Builder 6+, то можно воспользоваться функцией Round в Math.hpp, иначе round, описанный ниже
CODE |
#include <math.h>
int round(double dVal)
{// можно поискать и другие способы округления
int res;
double num=0.0,fract;
res=floor(num);
fract=modf(dVal,&num);
if(fract>=0.5)res++;
return res;
}
...
t:=round(10+350*sqrt(double(2700000+r*95000)/double(s)));
...
| |
|
** Начинающий |
Отправлено: 24.05.2005, 14:45 |
|
Не зарегистрирован
|
Нет, паскаль та считает, приведённый мной код как раз корректно, не могу заставить С++ посчитать тоже самое и получить такой же результат, какой выдаёт паскаль
Вот таке пробовал:
CODE | long t=10+350*sqrt((2700000+r*95000)/s); |
CODE | long t=floor(10+350*sqrt((2700000+r*95000)/s)); |
CODE | long t=ceil(10+350*sqrt((2700000+r*95000)/s)); |
Ну не понимаю, в чём проблема... при том ошибается в целой части
|
|
Guest |
Отправлено: 24.05.2005, 14:51 |
|
Не зарегистрирован
|
QUOTE |
Для начала так
t:=round(10+350*sqrt((2700000.0+r*95000.0)/s));
|
|
|
Doga |
Отправлено: 24.05.2005, 14:55 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
CODE |
long t=(long)RoundTo(10.0+350.0*sqrt((2700000.0+((double)r)*95000.0)/((double)s)),0);
|
Такая запись даст самый точный результат для t.
|
|
** Начинающий |
Отправлено: 24.05.2005, 15:09 |
|
Не зарегистрирован
|
QUOTE (Doga @ 24/05/2005, 14:55) | CODE |
long t=(long)RoundTo(10.0+350.0*sqrt((2700000.0+((double)r)*95000.0)/((double)s)),0);
|
Такая запись даст самый точный результат для t. |
Вооооо, Doga, это то что нада... не знаю пока как такое самому сочинить, но считает теперь верно.
Спасибо огромное.
З.Ы. Где можно в интернете почитать литературу по С++ Билдеру для "полных чайников" начиная от типов данных и.т.д. с хорошим "разжевыванием". |
|
Rius |
Отправлено: 24.05.2005, 15:16 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
Страуструп "С++", потом Архангельский "Borland C++ Builder 5 (и 6 тоже есть)" или Холлингвурд "C++ Builder 5 for developers".
|
|
Gedeon |
Отправлено: 24.05.2005, 16:20 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Лучше уж тогда начинать с
Б.В. Керниган, Д.М. Ричи. Язык С.
А вот дальше Г. Шилдт "Самоучитель С++" мне нравится больше Страуструппа.
|
|
Doga |
Отправлено: 24.05.2005, 18:34 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Рад, что смог помочь
|
|