2009-06-17 18 views
6

यह शायद एक मूर्ख और आसान सवाल है, लेकिन ऐसा लगता है कि कभी-कभी सबसे सरल चीजें मुझे और समस्याएं देती हैं!सी या उद्देश्य सी में गणित प्रश्न

यह सूत्र 0 और 100 के बीच

(200/23) * Abs(Mod(2987, 23) - 23/2) 

उद्देश्य सीआई में इस तरह यह कोडित मुझे एक नंबर देने के लिए लगता है:

(200/23) * abs(2987 % 23) - (23/2); 

सूत्र से दोषपूर्ण है (और नहीं देता 0 और 100 के बीच एक जवाब) या मेरा कोड गलत है? ऐसा लगता है कि मेरा मॉड्यूलस मुझे सही परिणाम नहीं दे रहा है। क्या यह मुझे एक नंबर पूर्णांक नहीं देना चाहिए?

धन्यवाद

+0

बेवकूफ सवाल: सी में यह कभी भी एक फ़्लोटिंग पॉइंट नंबर वापस नहीं करेगा, क्योंकि इसमें शामिल सभी मूल्य पूर्णांक हैं। क्या यह उद्देश्य सी में अलग-अलग काम करता है? –

+0

पता नहीं कि आप क्या कर रहे हैं, लेकिन यदि आप कभी यादृच्छिक संख्या चाहते हैं: 'arc4random()% 100'। या तो आप केवल स्थिर संख्या लिख ​​सकते हैं और इसके साथ किया जा सकता है। – pablasso

उत्तर

17

आपका कोड उद्देश्य सी में गलत है ...

(200/23) * abs(2987 % 23) - (23/2); 

होना चाहिए

(200/23) * abs((2987 % 23) - (23/2)); 

सिर्फ 73.9 बात है।

लेकिन यह सूत्र भी गलत है, आप 0 और 100 के बीच मूल्य चाहते हैं। आपका वर्तमान सूत्र 0 तक नहीं पहुंचता है, क्योंकि% 23 में 0-22 की सीमा होती है, इसलिए यदि आप 23 घटाते हैं तो सबसे कम मूल्य प्राप्त हो सकता है/2 और फिर पूर्ण मान लें .5 (11-11.5 और 12-11.5)। इस उदाहरण में 22 आदर्श संख्या होगी।

इसके अलावा 23/2 घटाने से आपको असमान वितरण मिलता है, यदि आपने बस 100/22 तक मॉड गुणा किया है, तो आप बेहतर होंगे। यह जानने में मदद करेगा कि आप क्या प्रयास कर रहे हैं।

+3

दरअसल, वह सिर्फ 73.9130434783 लिखा था: -पी। –

+0

बिल्कुल सही! मुझे पता था कि यह कुछ आसान था ... धन्यवाद। – Xcoder

संबंधित मुद्दे