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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.75
Feuer
72 / 72 / 7
Регистрация: 13.10.2008
Сообщений: 144
#1

нахождение корня без sqrt() - C++

12.11.2008, 01:51. Просмотров 4630. Ответов 8
Метки нет (Все метки)

Здравствуйте. Ну как вы наверно поняли нужно написать собственную функцию нахождения корня.
вот что я наваял:
Код
const double eps=0.0001;
double sqrt=0;
double n;
cin>>n;
while(sqrt*sqrt <n){
    sqrt+=eps;
};
cout<<"sqrt("<<n<<") = "<<sqrt;
Вроде правильно и вроде все работает, но
При вводе 16 генерирует 4, а при вводе, скажем, 100 - 10.0001.. Никак не могу понять почему, т.е. несмотря на то что уже получено число 10 он все равно считает его квадрат меньшим 100 и добавляет eps.. Помогите, пожалуйста..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
УЫЕУЕ
2 / 2 / 0
Регистрация: 04.11.2008
Сообщений: 37
12.11.2008, 03:24     нахождение корня без sqrt() #2
http://guidoscope.com/ru/Извлечение_...орня_столбиком.
greshnikk
30 / 30 / 0
Регистрация: 05.11.2008
Сообщений: 162
12.11.2008, 08:10     нахождение корня без sqrt() #3
хммм... я правильно понял - тебе надо написать функцию нахождения корня, но при етом ты в етой функции используешь нахождение корня...
Тебе надо использовать ряд Тейлора.
Feuer
72 / 72 / 7
Регистрация: 13.10.2008
Сообщений: 144
12.11.2008, 15:04  [ТС]     нахождение корня без sqrt() #4
Цитата Сообщение от greshnikk Посмотреть сообщение
хммм... я правильно понял - тебе надо написать функцию нахождения корня, но при етом ты в етой функции используешь нахождение корня...
Тебе надо использовать ряд Тейлора.
нужно найти корень без использование библиотечных функций(sqrt() ну и pow()) я их не применял... Может тебе показалось.. -в моем случае sqrt - это просто переменная.
greshnikk
30 / 30 / 0
Регистрация: 05.11.2008
Сообщений: 162
12.11.2008, 15:10     нахождение корня без sqrt() #5
тьфу... затормозил
Попробуй введи значение не 100, а 100.0000000
Feuer
72 / 72 / 7
Регистрация: 13.10.2008
Сообщений: 144
12.11.2008, 18:11  [ТС]     нахождение корня без sqrt() #6
Цитата Сообщение от greshnikk Посмотреть сообщение
Попробуй введи значение не 100, а 100.0000000
тот же результат... ума не приложу, в чем тут может быть дело....
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 402
12.11.2008, 18:31     нахождение корня без sqrt() #7
Feuer, введи может ещё каких-нить чисел, кроме 100 и 16 +)
чтобы чуть больше статистики и результаты сюда +)) как минимум стоит проверить все целые корни между ними, а так же хотябы 1 число больше 100... можно больше... возможно это даст чуть больше соображений, почему может неработать... +)
qwone
8 / 8 / 1
Регистрация: 18.08.2008
Сообщений: 129
13.11.2008, 20:41     нахождение корня без sqrt() #8
А что метод дихотомии(метод Ньютона) , деления отрезка пополам отменили . ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2008, 20:59     нахождение корня без sqrt()
Еще ссылки по теме:

C++ Нахождение корня методом деления отрезка пополам
Дано натуральное число n. Вычислить sqrt(2+ sqrt(5 + sqrt(7...)) C++
C++ Нахождение корня нелинейного уравнения методом итерации
Нахождение квадратного корня C++
C++ Нахождение корня целого числа методом Ньютона

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
seravr
1 / 1 / 0
Регистрация: 11.11.2008
Сообщений: 34
13.11.2008, 20:59     нахождение корня без sqrt() #9
При отладке очень интересная вещь полдучается, автор, посмотрите внимательно в отладке при последней итерации что находиться в переменной sqrt!! C чем это связано, пока не понятно, надо поглубже поискать причину, ну а пока вот код на Си, просто задайте точность после запятой при помощи модификатора, и программа все очень даже хорошо считает

Код
#include<stdio.h>
#include<conio.h>
 
void main()
{
    const double eps=0.000001;
    double sqrt=0,n,root=0;
    printf("Input number=\t");
    scanf("%lf",&n);
 
    while(sqrt<n)
    {
        root+=eps;
        sqrt=root*root;
    }
 
    printf("\nSquare root of the number=\t%6.5lf",root);
 
    getch();
 
}
Yandex
Объявления
13.11.2008, 20:59     нахождение корня без sqrt()
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru