- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <cmath>
double mySqrt( float, float );
int main() {
float a, n;
cin >> a >> n;
cout << mySqrt( a, n ) << endl;
return 0;
}
double mySqrt( float a, float n ) {
const double EPSILON = 0.00001;
double precision;
double x = 0, x_prev = 1.0;
do {
x = (x_prev * (n - 1.0) + a / pow( x_prev, n - 1.0 )) / n;
precision = fabs( x - x_prev );
x_prev = x;
} while( precision > EPSILON );
return x;
}
Студентота, да.
Извлечение корней.
bormand 28.07.2012 05:15 # +5
Самая обычная лаба. Причем многой студентоте до такого качества кода еще учиться и учиться...
vistefan 28.07.2012 11:47 # 0
С другой стороны - капитанство ОП
> Извлечение корней.
Так что всё равно минус.
vortexx1 28.07.2012 13:03 # +2
bormand 28.07.2012 13:11 # +3
Ну цикл с постусловием обычно плохо читается. Хотя в данном случае он короткий, while стоит на той же строке, что и }, и после него не забыли поставить пустую строку. Так что тут все читается нормально.
В случаях подобных данному, цикл с постусловием, имхо, вполне уместен, чего не скажешь о заполнении переменных мусором, которое пришлось бы применить ради входа в цикл с предусловием...
vortexx1 28.07.2012 13:32 # +2
guest 28.07.2012 12:06 # +1
Можно было бы считать приращение delta = x - x_prev и делать это так:
Можно было бы проверять, что a>=0.
Можно было бы сделать mySqrt шабло
А в остальном: парень, ты все сделал пральна, смело тащи преподу.
bormand 28.07.2012 12:59 # 0
a<0 вполне допустимо при нечетных n.
vortexx1 28.07.2012 13:12 # 0
Спасибо.
SmackMyBitchUp 28.07.2012 13:16 # +1
vortexx1 28.07.2012 13:31 # 0
TarasB 28.07.2012 12:24 # +2
Попросу студента самого реализовать pow, чтобы работало за O(1), пользоваться стандартной экспонентой и логарифмом нельзя (пусть сам пишет если надо).
vortexx1 28.07.2012 13:06 # 0
С fabs то же самое?
vortexx1 28.07.2012 13:10 # 0
vercetti 28.07.2012 14:40 # +4
bormand 28.07.2012 14:48 # 0
А вот если бы n был целым - тогда, возможно, имело бы смысл написать свою функцию pow, возводящую число в целую степень за O(log(n))...
HaskellGovno 28.07.2012 17:01 # +1