[問題] 關於C語言開根號
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
題目:要用逼近法將輸入之變數Z(限定範圍1~1023)開根號,
找出一個Y使得Y*Y與Z的相差小於0.01,也就是Z-Y*Y<0.01
我是先用Z本身當起始,也就是令Y=Z,
若相差大於0.01,且Y>=Z時,令Y=Y/2,
若相差大於0.01,且Y<Z時,令Y=Y+(Z-Y)/2
希望得到的正確結果:
如題目
程式跑出來的錯誤結果:
compiler沒有問題,但是跑不出結果。
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-C++
有問題的code: (請善用置底文標色功能)
/*開根號運算*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int z;
do
{
printf("輸入一個整數(1~1023):");
scanf("%d",&z);
}
while(z<1||z>1023);
double a=z;
double b=z;
double x;
double y;
do
{
double c=b*b;
if(a<=c)
{
x=c-a;
if(b>=a)
{
y=b;
b=b/2;
}
else{
y=b;
b=b+(a-b)/2;}
}
else {
x=a-c;
if(b>=a)
{
y=b;
b=b/2;
}
else{
y=b;
b=b+(a-b)/2;}
}
}
while(x>0.01);
printf("%d開根號等於%f",z,y);
return 0;
}
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.121.138
→
10/12 15:27, , 1F
10/12 15:27, 1F
※ 編輯: edd740404 來自: 140.114.121.138 (10/12 15:29)
→
10/12 15:48, , 2F
10/12 15:48, 2F
→
10/12 15:50, , 3F
10/12 15:50, 3F
→
10/12 18:09, , 4F
10/12 18:09, 4F
→
10/12 18:17, , 5F
10/12 18:17, 5F
→
10/12 18:17, , 6F
10/12 18:17, 6F
→
10/12 18:17, , 7F
10/12 18:17, 7F
→
10/12 18:23, , 8F
10/12 18:23, 8F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
問題
0
8