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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на int 
V
    Опции темы
Flenger
  Дата 22.4.2007, 14:28 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброе время суток.

У меня задача на проверку числа: простое||сложное;

Вот у меня вопрос как можно проверить число целое или действительное?

Как то типа if ((int)a) помогите как правильно проверить….

PM MAIL   Вверх
NightmareZ
Дата 22.4.2007, 14:35 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Flenger @  22.4.2007,  14:28 Найти цитируемый пост)
Вот у меня вопрос как можно проверить число целое или действительное?

Код

if (abs(a - (int)a) < 0.0000001)

Значит приблизительно целое  smile 

Это сообщение отредактировал(а) NightmareZ - 22.4.2007, 14:36


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Бонифаций
Дата 22.4.2007, 14:58 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



NightmareZ,  и что будет если а = 3.00000000000000 ?


Flenger, не очень понятна постановка вопроса. имеется в виду проверка типа переменной/kонстанты? или скажем char a[] = "3.0" и надо узнать тип числа в строке? Или может быть узнать возможно ли преобразование к int без потери точности?




--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
vinter
Дата 22.4.2007, 15:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



NightmareZ, прав 
Цитата(Бонифаций @  22.4.2007,  14:58 Найти цитируемый пост)
NightmareZ,  и что будет если а = 3.00000000000000 ?

значит будет целое


--------------------
Мой блог
PM MAIL WWW   Вверх
Xenon
Дата 22.4.2007, 15:36 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Можно юзать RTTI smile


--------------------
user posted image  
PM MAIL   Вверх
vinter
Дата 22.4.2007, 15:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Xenon, ты видимо вопроса не понял(или яsmile), RTTI не поможет, тип то все равно вещественный будет, а вот число неизвестно какое..


--------------------
Мой блог
PM MAIL WWW   Вверх
Xenon
Дата 22.4.2007, 16:10 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



vinter, хм ... Я думал нужно тупо типа проверить smile


--------------------
user posted image  
PM MAIL   Вверх
powerfox
Дата 22.4.2007, 16:29 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



Делаем x % y (находим остаток), сравниваем результат с нулём, если 0, то простое.


--------------------
user posted image
PM WWW   Вверх
Xenon
Дата 22.4.2007, 16:41 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



либо & 1


--------------------
user posted image  
PM MAIL   Вверх
threef
Дата 22.4.2007, 17:09 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Может и вправду надо проверить - числа простые или нет ? Если вопрос из этой области,
то "ненаучная" функция проверки такова
Код

bool simple(int z)
{
      if( z% 2==0 ) return false;// 2 -делитель, число не простое
      int maxi = sqrt(z);
      for(int i=3; i<=maxi; i+=2)
      {
           if( z % i == 0 )
                return false;// i -делитель, число не простое
      }
       return true; // делителей не нашлось
}


Есть и более быстрые способы, читай теорию.
PM MAIL   Вверх
betal
Дата 22.4.2007, 17:28 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(powerfox @  22.4.2007,  16:29 Найти цитируемый пост)
Делаем x % y (находим остаток), сравниваем результат с нулём, если 0, то простое. 

 smile  smile 
--------------------
101100010100001101100001110100101111011легкие деньги
PM WWW ICQ   Вверх
NightmareZ
Дата 22.4.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(powerfox @  22.4.2007,  16:29 Найти цитируемый пост)
Делаем x % y (находим остаток), сравниваем результат с нулём, если 0, то простое.

Ты понял вообще сейчас, что за ахинею написал?
С какой это радости оно будет простым?

Цитата(Xenon @  22.4.2007,  16:41 Найти цитируемый пост)
либо & 1

Ещё лучше. Обоснуй.

Просто́е число́ — это натуральное число, большее единицы, имеющее ровно два натуральных делителя: 1 и само себя. © wiki http://ru.wikipedia.org/wiki/Простое_число

threef, луч света в тёмном царстве  smile 

Flenger, как узнать что число целое - смотри мой пост. Что простое - смотри пост threef.

Это сообщение отредактировал(а) NightmareZ - 22.4.2007, 17:54


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Xenon
Дата 22.4.2007, 18:10 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



NightmareZ, действительно с дуба упал, написал зачем-то проверку четности числа.
Если проверить простое / непростое - можно так
Код

bool is_simple(int num)
{
    int divider = 1;
    if (num % 2 == 0) divider = 2;
    while ( (divider+=2) <= std::floor(std::sqrt(static_cast<double>(num))) )
    {
        if (num % divider == 0)    return false;
    }
    return true;
}



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


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



Цитата(NightmareZ @  22.4.2007,  18:52 Найти цитируемый пост)
Цитата(powerfox @  22.4.2007,  16:29 Найти цитируемый пост)
Делаем x % y (находим остаток), сравниваем результат с нулём, если 0, то простое.

Ты понял вообще сейчас, что за ахинею написал?
С какой это радости оно будет простым?


Оговорился, можно было бы и определения числа не писать, я с математикой знаком ;) Я про это:

Цитата(Flenger @  22.4.2007,  15:28 Найти цитируемый пост)
Вот у меня вопрос как можно проверить число целое или действительное?



А по поводу простого и сложного, то способ проверки остатка вполне подходит.

Добавлено @ 18:32
Цитата(NightmareZ @  22.4.2007,  18:52 Найти цитируемый пост)
threef, луч света в тёмном царстве 

Ага. Только 111 за простое не принимает его код.

Код

bool simple(int z)
{
        for(int i=2; i<z; i++)
        {
          if (z%i==0)
                return 0;
        }
return 1;
}



Это сообщение отредактировал(а) powerfox - 22.4.2007, 18:56


--------------------
user posted image
PM WWW   Вверх
Xenon
Дата 22.4.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



powerfox, А с каких пор 111 перестало нацело делиться на 3?


--------------------
user posted image  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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