Форум программистов, компьютерный форум CyberForum.ru

Округление double - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объединить два упорядоченных связанных списка в один через функцию merge http://www.cyberforum.ru/cpp-beginners/thread369834.html
Совсем недавно начал изучение списков в С++(как и сам С++), срочно требуется ваша помощь по решению следующей задачи: Объединить два упорядоченных связанных списка в один через функцию merge. Если это возможно - выложите сразу рабочий код. Буду очень благодарен.
C++ Матрица Вот код: //--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> #include <conio.h> #define SIZE 9 #pragma hdrstop http://www.cyberforum.ru/cpp-beginners/thread369832.html
помогите с решение задачи на c++. C++
протабулируйте функции. Отрезок и шаг вводятся с клавиатуры: e^x-arctg(x)
C++ Почему runtime error
Вот сама задача http://********/?main=task&id_task=120. #include <algorithm> #include <fstream> using namespace std; int main() { ifstream fin ("INPUT.TXT");
C++ Считывание вместе с пробелами http://www.cyberforum.ru/cpp-beginners/thread369815.html
Столкнулся с одной проблемой при считывании из файла программа считает пробелы символами разделителями ifstream in("input.txt"); ofstream o("output.txt"); char a; while(!in.eof())i>>a; Подскажите пожалуйста как поступить!
C++ кто смыслит в алгоритмизации, протяните руку помощи на носу аттестация, а у меня ничего не готово. пожалуйста, помогите с решением задач. подробнее

Показать сообщение отдельно
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.10.2011, 19:51     Округление double
Не ясно условие задачи
надо вывести, сколько раз k*A/B является целым(k*A<C), где k - переменная, увеличивающаяся на 1 при каждой проверке
if(floor(k*A/B)==C/B)
Какие образом эта проверка выявит что k*A/B - целое число ?
Почему сравнивается именно с C/B, если нужно получить целое число ?

Вообще говоря пусть double t= k*A/B;
Нужно проверить что t - целое число
Так как полного совпадения с целым добиться крайне трудно то будем проверять что число t является целым с какой-то точностью eps ( eps= 0.001 )
Для простоты предположим что A>0, B>0, C>0
Тогда целая часть t - это floor(t)
Дробная часть t - это t-floor(t)
Нам нужно проверить что дробная часть t меньше eps
Условие такое:
if ( fabs( t-floor(t) )<eps ) ...

Добавлено через 3 минуты
Код примерное такой

C
1
2
3
4
5
6
7
8
9
10
double A,B,C, eps= 0.001;
double t;
int count= 0, k;
 
for ( k= 0; k*A<C; k++ ) {
    t= k*A/B;
    if ( fabs( t-floor(t) )<eps ) { count++; }
}
 
printf( "answer=%d\n", count );
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru