![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Не сумел найти ответа в FAQ (там есть похожая тема, но она не открывается). Как написать примерно по такому алгоритму прогу:
1. Юзер вводит число. 2. Если из числа можно извлечь корень, и полученное число будет целым, то вывести полученное число. 3. Если из числа можно извлечь корень, но полученное число нецелое, то сказать об этом и вывести нецелый результат. 4. Если корень не извлекается (т.е. число иррациональное), то сказать об этом и ничего не делать. Я не прошу написать программочку за меня, я прошу объяснить мне алгоритм ее написания. И подбросьте плиз функцию извлечения кв. корня из чисел, из которых он нацело не извлекается... |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
sqrt
Это сообщение отредактировал(а) Mayk - 12.2.2006, 19:46 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Спасибо! Только вот на этот вопрос нет ответа:
|
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
А такое возможно? По-моему не существует нецелых чисел квадрат которых - целое число -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| profispb |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.12.2005 Где: Санкт - Петербург Репутация: 1 Всего: 1 |
sim7, Умнож дробное число на 1.0 и функция SQRT(3.567*1.0);
--------------------
В жизни, я люблю делать, то что я люблю. А не то что модно, престижно и выгодноЛюблю когда начинает работать, то что без меня не работало! |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
(static_cast<int>(v) == v) будет истинным <=> v целое -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Тьфу ты. Точно. А код
Будет работать правильно? Т.е. програ скажет, что корень извлечь нельзя? |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
ээ. скорее всего выделенный участок никогда не выполнится. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Adil' |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
, это как повезет - если не ошибаюсь static_cast<int>(v) при сравнении с v (которое doulbe) будет приведено к double, и если static_cast<int>(v) нельзя разложить в ряд по степеням двойки, то...
Лучше сравнивать так if(fabs(v-(int)v)<1.e-10) -------------------- Удачи |
|||
|
||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
a^2=x
a= x/a 2a=a+x/a a[k]=(a[k-1]+x/a)/2 | a[k]-a[k-1] | < epsilon Это формула Ньютона, к - шаг итерации. А проверить , является ли число целым - привести к int корень и возвести в квадрат. С учетом того, что целые должны входить в диапазон целых чисел. |
|||
|
||||
| Mayk |
|
||||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
А когда это двоичное число нельзя разложить по степеням двойки? Проверим:
Тест 1. Абсолютно случайные.
Тест 2. Сверх малые ( [0;1) ). 0) Убрать * rand(). 1) Запустить. Очевидно, результат тот же самый что и в предыдущем примере. Тест 3. Случайные целые. Заменить double f = drand48(); на double f = rand();
Тест 4. Последовательные целые.
Итого проверено 10240000 * 15 * 3 + 10240000 = 471.040.000 чисел. Надежность static_cast проверки считаю доказанной. Это сообщение отредактировал(а) Mayk - 13.2.2006, 19:45 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||||
|
|||||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |