機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
樓主: 昨日明月
打印 上一主題 下一主題

求解一個C語言程序功能是每隔6°18′54″就增加6°18′54″并輸出結(jié)果的程序問題。

[復(fù)制鏈接]
11#
發(fā)表于 2013-9-14 23:11:39 | 只看該作者
本帖最后由 逍遙處士 于 2013-9-14 23:35 編輯
. F' @2 y8 d6 X. A# Y
: v: A+ Q: N- T8 S. n8 v& B& x7 t
: V5 |. C3 H) T% p8 ~
這是用MathCAD做的計算,程序跟一樓一樣,可見第5個也是29,就這來看樓主的程序可能有缺陷。
' [( S8 g! b) j' u假如齒數(shù)為57,則360*3600/57不能整除,問題是否出在這兒?
+ Q& G6 X5 `- W& ]7 Y1 J  R) [& F; v$ L3 |, X. B6 {; ^
假設(shè)所給齒數(shù)能整除的話,不妨只考慮將第一個角度依次翻倍,代碼如下:* M. c3 [$ X: B& i. m
9 w) R1 n% {0 C5 T1 W
int a=0, b=0, c=0;   p% X6 A- E/ ?$ I1 O" C% B* |4 w
while ( a<360 )
4 @0 x1 P6 [) `( E8 f{
, V* s# d2 y8 }  c=(c+s)%60; if ( (c+s)>=60 )  b=(c+s)/60;
: g9 Q8 \: `# g% e* y! K* v  b=(b+f)%60; if ( (b+f)>=60 )  a=(b+f)/60;
- f) M3 Z" ?* ^  u' ^+ W  a=a+j;) M9 E; y- T6 ~9 q% A
  printf("%d°%d′%d″\n",a,b,c);
! c% ]( L$ N" f+ P( ~}/ V: X- K! R& |2 @3 f

  V$ }- W( D4 b. u! O6 T不妨試一試,看下結(jié)果。' k1 v9 ^+ G5 s' r- ]
& m4 w  r, T3 p: {8 W; I5 Y

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x

點評

有點問題,改正在17樓。  發(fā)表于 2013-9-15 10:40
回復(fù) 支持 反對

使用道具 舉報

12#
發(fā)表于 2013-9-15 08:20:37 | 只看該作者
隱含的升位運算和強制降位運算都會遭遇精度損失,如果取值范圍夠用的話,參與運算的數(shù)據(jù)最好都統(tǒng)一為一種類型,比如全部為float型。
2 k5 r$ |6 T8 z/ [  g
0 M3 h: a* }% X7 V, a樓主程序中的2 u" t' T1 a* I) K9 H* A) g" w4 ?

+ h: b' n3 O8 Y% B    int  m=22734;: @6 P. u+ B$ y7 }& k

8 F8 K5 Z  V1 v該值是做什么用的?該值如何來的?
回復(fù) 支持 反對

使用道具 舉報

13#
 樓主| 發(fā)表于 2013-9-15 08:22:37 | 只看該作者
fmdd 發(fā)表于 2013-9-15 08:20
! l1 d( F5 X# B! R隱含的升位運算和強制降位運算都會遭遇精度損失,如果取值范圍夠用的話,參與運算的數(shù)據(jù)最好都統(tǒng)一為一種類 ...
6 Z# a0 j6 n( B5 g
取的值,可以變化的。是6°18′54″轉(zhuǎn)化為秒數(shù)
( ?- t3 q% n3 W7 n3 ^
回復(fù) 支持 反對

使用道具 舉報

14#
發(fā)表于 2013-9-15 08:31:22 | 只看該作者
本帖最后由 fmdd 于 2013-9-15 08:33 編輯
4 |- G8 `+ b& U: v& A) v" U
昨日明月 發(fā)表于 2013-9-15 08:22
- i- x' P) h. {% v取的值,可以變化的。是6°18′54″轉(zhuǎn)化為秒數(shù)
1 S; x) |% ^: z+ P
這個取值本身就損失了精度
2 @$ ]( S+ X9 T, |. N0 y, F  N; R% F7 o! K
6°18′54″是指一個齒的轉(zhuǎn)角是么?這個值的精度不夠,計算出來是6.31578947……°+ Z+ v6 A- p( D0 v! o6 _
; j  }  N- f: C/ P: v0 o8 C! B% Y
這里的精度損失造成了最后累加數(shù)值偏差。7 G% a+ \/ ?& r, p- {. C
回復(fù) 支持 反對

使用道具 舉報

15#
 樓主| 發(fā)表于 2013-9-15 08:33:11 | 只看該作者
fmdd 發(fā)表于 2013-9-15 08:31 $ h4 `; k: z9 `' c" g( w3 `
這個取值本身就損失了精度  h" y+ l, T4 k: d  k8 ?

) C* s( f# @0 ^6°18′54″是指一個齒的轉(zhuǎn)角是么?這個值的精度不夠,計算出來是6.3157894 ...
( C* H1 M4 V# ^" S1 d
老式銑床精度要求沒那么高。。。 達到秒數(shù)就夠了。。。
3 X+ x  M0 D, V6 v+ J7 i3 ]. r! @& V6 m: K
回復(fù) 支持 反對

使用道具 舉報

16#
 樓主| 發(fā)表于 2013-9-15 09:03:58 | 只看該作者
逍遙處士 發(fā)表于 2013-9-14 23:11 - C2 g% G& m- J% X( D6 p
這是用MathCAD做的計算,程序跟一樓一樣,可見第5個也是29,就這來看樓主的程序可能有缺陷。
9 ^7 Z0 ?7 L) _$ O  L" b假如齒數(shù) ...

% f# T9 l' x  _$ _" u/ h5 J" b8 ~按照逍遙前輩的代碼運行還是有問題呢?

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x

點評

搞錯了。應(yīng)該把 if 語句放前面。  發(fā)表于 2013-9-15 10:40
回復(fù) 支持 反對

使用道具 舉報

17#
發(fā)表于 2013-9-15 10:39:52 | 只看該作者
這是一個很有意思的問題。我也試了以下,結(jié)果當i = 5的時候,c 確實等于29。為此,當i = 5的時候,檢查 c 取整以后的余數(shù) =1 ,也是一個整數(shù)。它就是 c 所差的數(shù),由此,我就懷疑程序本身的內(nèi)部函數(shù)在處理“余數(shù)”的問題?!為此,我把6°18′54″化成22734″的數(shù)值改成了22734.0001″,結(jié)果一切正常。這說明你所編的程序并沒有錯。請試試看。
回復(fù) 支持 反對

使用道具 舉報

18#
發(fā)表于 2013-9-15 10:41:38 | 只看該作者
把那兩行改成這樣試一試:* x8 k8 U. g6 V
if ( (c+s)>=60 )  b=(c+s)/60; c=(c+s)%60; . Y% ?3 b5 i. e: w  k# Y6 p8 w
if ( (b+f)>=60 )  a=(b+f)/60;  b=(b+f)%60;
回復(fù) 支持 反對

使用道具 舉報

19#
 樓主| 發(fā)表于 2013-9-15 11:42:32 | 只看該作者
逍遙處士 發(fā)表于 2013-9-15 10:41
! b# }4 z0 _) m; j# Y* u把那兩行改成這樣試一試:
; J: o* w6 _' A0 j8 n3 Aif ( (c+s)>=60 )  b=(c+s)/60; c=(c+s)%60;
  O. J3 B4 N  ^' b$ T, t4 Hif ( (b+f)>=60 )  a=(b+f)/60;  ...
& N3 k# H/ E" p4 e
改后是這個結(jié)果,也不行。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x
回復(fù) 支持 反對

使用道具 舉報

20#
發(fā)表于 2013-9-15 11:57:54 | 只看該作者
本帖最后由 逍遙處士 于 2013-9-15 12:00 編輯 3 ~( l/ L  m- l& c# e: ^6 c" G
昨日明月 發(fā)表于 2013-9-15 11:42 ! b. e' i- K# H" }# Q
改后是這個結(jié)果,也不行。

0 r$ x8 l. H3 b" k1 Z2 L2 B9 B
5 n; x' ^5 D+ w2 A& X) s漏掉了一個 號,哈哈!% z/ G9 n, ~% c; c
吾寶刀未老也!
. y# w8 O  S& d4 W  d, Q
$ T6 }9 I" l' y. U5 ^; {# u

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x

點評

三分寫,七分試。  發(fā)表于 2013-9-15 12:02
這次整對了。謝謝逍遙前輩。  發(fā)表于 2013-9-15 12:01
回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-9-25 21:21 , Processed in 0.060320 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表