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

Поиск:

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


Шустрый
*


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

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



мне надо узнать  например, делится ли число Х на 5 нацело? как сделать?smile
по-любому в библиотеке какой-то есть...только я вот не знаю =\
PM MAIL   Вверх
Nat
Дата 2.12.2008, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



X%5 = 0;

0 - остаток.
PM MAIL   Вверх
Dmi3ev
Дата 2.12.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



маленький примерчик
Код

#include <iostream.h>
//---------------------------------------------------------------------------
bool mycheck(int x, int y)
{
if ((x%y)==0)
 return (true);
else
 return false;
}


//---------------------------------------------------------------------------


int main()
{
//...
int d;
int ch=5;
cout<<"Enter your number: "<<endl;
cin>>d;
(mycheck (d, ch))? (cout<<d<<" kratno "<<ch) : (cout<<d<<" ne kratno "<<ch);
return 0;
//...
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Dmi3ev - 2.12.2008, 13:56


--------------------

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


Шустрый
*


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

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



Извините пожалуйста...
1. что такое mycheck?
2. а если не int? ведь нельзя же  % использовать с double..
PM MAIL   Вверх
Dmi3ev
Дата 2.12.2008, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

2. а если не int? ведь нельзя же  % использовать с double..

а какой у тебя будет остаток от деления 2,5 на 5 допустим??? может ты имеешь ввиду проверку деления нацело?
допустим x=4,2 а y=2,1, тогда x/y=2, это кратно или нет?
а если y=5? тогда чего? объясни подробнее


--------------------

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


Шустрый
*


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

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



идет инремент массива бесконечно много раз list[index]....index++;

каждый раз, когда index/5 = целое чило 1,2,3,4,5,6,7.....
, надо делать \n

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

каждый раз, когда index/5 = целое чило 

 значит index целое число))) не так ли??

Добавлено через 1 минуту и 11 секунд
Цитата

1. что такое mycheck?

функция проверки кратности, которая написана над main, если кратно, то тогда возвращает true

Добавлено через 12 минут и 25 секунд
если число не int, а double и надо узнать делится ли на цело одно на другое, то:
Код

#include <iostream.h>
//---------------------------------------------------------------------------
bool mycheck(double x, double y)
{
if (x/y==int(x/y))
 return (true);
else
 return (false);
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
//...
double d;
double ch=5.5;
cout<<"Enter your number: "<<endl;
cin>>d;
(mycheck (d, ch))? (cout<<d<<" kratno "<<ch) : (cout<<d<<" ne kratno "<<ch);
//...
return 0;
}
//---------------------------------------------------------------------------



--------------------

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


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


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

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



Dmi3ev, первый код можно было бы написать более компактно.
Код

#include <iostream>

bool mycheck(int x, int y)
{
 return (!(x%y));
}

void main()
{

int d, ch=5;
std::cout<<"Enter your number: \n";
std::cin>>d;
std::cout<<d<<( (mycheck (d, ch) ) ? " kratno " : " ne kratno " )<<ch<< "\n";

}

анологично второй код.
Код

#include <iostream>

bool mycheck(double x, double y)
{
 return ( x/y == int (x/y) );
}

void main()
{
double d, ch=5.5;
std::cout<<"Enter your number: \n";
std::cin>>d;
std::cout<<d<<( (mycheck (d, ch) ) ? " kratno " : " ne kratno " )<<ch<< "\n";

}



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


Новичок



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

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



double может быть гораздо больше int
поэтому второй пример фигня 
PM MAIL   Вверх
IKM2007
Дата 2.12.2008, 16:57 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(system @  2.12.2008,  16:50 Найти цитируемый пост)
double может быть гораздо больше int

И? Что ВЫ хотели этим сказать? ВЫ вообще поняли, что требуется? 


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


Новичок



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

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



Цитата(IKM2007 @  2.12.2008,  16:57 Найти цитируемый пост)
И? Что ВЫ хотели этим сказать? ВЫ вообще поняли, что требуется?  

отлично понял, только вот вы видимо не хотите признать что код который вы изменили и сделали "компактно", остался 
игрушечным и бредовым

Добавлено через 4 минуты и 26 секунд
в догонку
Код

std::cout<<( (mycheck ( 10e+30, 2 ) ) ? " kratno " : " ne kratno " )<< "\n";

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



хотел написать небольшой примерчик, не знал, что такой спор разразится  smile 


--------------------

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


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


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

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



А кто сказал, что в C++ без подключения специальных библиотек можно выполнить арифметические действия с числами порядка 10^30 ?

Добавлено через 58 секунд
Попробуй до 10^9.


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


Новичок



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

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



Цитата(IKM2007 @  2.12.2008,  17:25 Найти цитируемый пост)
А кто сказал, что в C++ без подключения специальных библиотек можно выполнить арифметические действия с числами порядка 10^30 ?

RTFM в общем учите матчасть, и смотрите диапазон  double для ваше машины, 
Цитата
 Попробуй до 10^9 

ну это полная глупость вы входящий параметр сами написали, вот позвольте мне выбирать числа которые позволяет 
платформа
Код

bool whole( double x, double x2 )
{
        return ( fmod( x, x2 ) == 0.0 );
}


Добавлено через 38 секунд
для примера выше нужна math.h
PM MAIL   Вверх
IKM2007
Дата 2.12.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(system @  2.12.2008,  17:32 Найти цитируемый пост)
RTFM в общем учите матчасть,

Причем здесь матчасть?

Из твоего примера следует, что 10e+30 делится только на 2^k. Где k=1,2,3,4,...,30,....


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
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   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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