Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как проверить кратность числа?:), На чтоб нацело делилось. 
V
    Опции темы
system
Дата 2.12.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: 1
Всего: 2



разговор окончен
PM MAIL   Вверх
IKM2007
Дата 2.12.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(system @  2.12.2008,  17:58 Найти цитируемый пост)
разговор окончен

system, скажи числа, для которых твой код работает правильно, а мой-нет.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
system
Дата 2.12.2008, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: 1
Всего: 2



Цитата(IKM2007 @  2.12.2008,  18:04 Найти цитируемый пост)
system, скажи числа, для которых твой код работает правильно, а мой-нет. 

gcc linux fedora6
MinGW WinXP
Код

#include <math.h>
#include <iostream>
bool whole( double x, double x2 )
{
        return ( fmod( x, x2 ) == 0.0 );
}
bool mycheck(double x, double y)
{
 return ( x/y == int (x/y) );
}

int main() { 
 double x1 = 10E+30;
 double x2 = 2;
 std::cout << (whole( x1, x2 ) ? "true" : "false" )<< std::endl;
 std::cout << (mycheck( x1, x2 ) ? "true" : "false" ) << std::endl;
}

PM MAIL   Вверх
J0ker
Дата 3.12.2008, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



system, вы рановато разговор окончили  smile 
Код

std::cout << (whole(9.9, 3.3) ? "true" : "false" )<< std::endl;




--------------------
user posted image
PM MAIL   Вверх
Zakary
Дата 3.12.2008, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Спасибо вам огромное..очень круто..
PM MAIL   Вверх
system
Дата 3.12.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: 1
Всего: 2



Цитата(J0ker @  3.12.2008,  03:49 Найти цитируемый пост)
system, вы рановато разговор окончили 

в такой постановке вероятно без введения некоторой точности не обойтись  smile 
как - нить так
Код

const long double _ex_null = 1.0e-15; //Здесь можно выставить адекватную погрешность для задачи
bool whole( long double x, long double x2, long double ex_null = _ex_null )
{
        long double x3 = fmodl( x, x2 );
        return ( x3 <= ex_null  || ( fabsl( x3 - x2 ) <= ex_null )  );
}



Это сообщение отредактировал(а) system - 3.12.2008, 12:45
PM MAIL   Вверх
IKM2007
Дата 3.12.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(system @  2.12.2008,  23:37 Найти цитируемый пост)

gcc linux fedora6MinGW WinXP

Код

#include <math.h>
#include <iostream>
bool whole( double x, double x2 )
{
        return ( fmod( x, x2 ) == 0.0 );
}
bool mycheck(double x, double y)
{
 return ( x/y == int (x/y) );
}

int main() { 
 double x1 = 10E+30;
 double x2 = 2;
 std::cout << (whole( x1, x2 ) ? "true" : "false" )<< std::endl;
 std::cout << (mycheck( x1, x2 ) ? "true" : "false" ) << std::endl;

}



system, я же сказал, что твой код работает некорректно(то есть работает для степеней 2), поэтому и правильно для этого случая. smile 
А новый код, не стану спорить, лучше функции mycheck, но опять же не работает для значении порядка 10^30.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.