सी

2010-04-18 7 views
10

में फ़ंक्शन के रूप में मॉड्यूलो ऑपरेटर को कार्यान्वित करना हम ऑपरेटर का उपयोग किये बिना सी में फ़ंक्शन के रूप में मॉड्यूलो ऑपरेटर को कैसे कार्यान्वित कर सकते हैं?सी

उत्तर

5

सरल:

तो भागफल a/b प्रदर्शनीय है, अभिव्यक्ति (a/b)*b + a%b बराबर होगा a

(C99 मानक, 6.5.5/6)।

+15

यह सीधे सवाल का जवाब नहीं देता है, यह केवल% ऑपरेटर की एक स्वैच्छिक परिभाषा है (और इसलिए वास्तव में "सरल" नहीं)। मैं इसके लिए वोटों की संख्या पर सोच रहा हूं। – Clifford

+5

@ क्लाइफोर्ड: शायद क्योंकि एक स्पष्ट परिवर्तन के साथ (दोनों पक्षों से '(ए/बी) * बी' घटाना) यह'% बी' निर्धारित करने के लिए एक सूत्र बन गया है? – caf

+4

@caf: शायद, लेकिन "सरल" पाठक के पास (स्पष्ट) गणितीय कौशल के मानने के बजाय "स्पष्ट" परिवर्तन प्रस्तुत करना होता। ओपी की गणितीय क्षमता अज्ञात है; यह मानने के लिए कि यह स्पष्ट है बस दिखने जैसा दिख सकता है। – Clifford

37

एक गुणा के बाद एक पूर्णांक विभाजन करें, और घटाएं।

#include <stdio.h> 
int main() 
{ 
    int c=8, m=3, result=c-(c/m*m); 
    printf("%d\n", result); 
} 
6

ये रहा:

a % b = a - (b * int(a/b)) 
+3

वह कास्ट नोटेशन केवल सी ++ में काम करता है (सी नहीं, जो प्रश्न पूछता है) और यदि ए और बी पूर्णांक हैं तो अनिवार्य है। लेकिन डाउनवोट कहीं और से आया था। –

+0

@ जोनाथन लेफ्लर, क्या आप कृपया बता सकते हैं कि यह सी – user674669

+4

@ उपयोगकर्ता 674669 में काम नहीं करता है: सी में आपको '(int) (a/b) 'लिखना होगा। प्रकार-कार्यात्मक नोटेशन 'int (ए/बी) 'सी ++ के लिए विशिष्ट है। –

4

आप बार-बार x से y घटाकर और परिणाम का ट्रैक रखने के द्वारा x % y अनुकरण कर सकते हैं। प्रत्येक पुनरावृत्ति पर, यदि परिणाम y से कम है, तो आपके पास शेष है, और इसे वापस कर सकते हैं।

+2

यह धीमा लेकिन उपयोगी हो सकता है यदि कंप्यूटर में गुणा/विभाजन क्षमता नहीं है। – user674669

+1

यह वास्तविक सॉफ्टवेयर कार्यान्वयन कैसे काम नहीं करता है। एक वास्तविक सॉफ़्टवेयर कार्यान्वयन दूसरे ऑपरेंड को दोगुना कर देगा जब तक कि एक और दोगुनी इसे पहले से घटाए, घटाए, और फिर दूसरे ऑपरेंड को दो से घटाकर घटाकर घटाएं। – EJP

0

लाभांश/भाजक = भागफल

सूत्र (अजगर 3 में) नीचे है:

Modolus = Divident - लाभांश // भाजक * भाजक

उदाहरण के लिए यदि लाभांश = 5, और भाजक = 2, फिर

मापांक = 5 - 5 // 2 * 2 जो 5 हो जाता है - 2 * 2 5 - 4 याद रखें // ज है igher प्राथमिकता - - तो 5 // 2 पहले मूल्यांकन किया गया है।

+0

होना चाहिए @fbrereto उत्तर से यह अलग कैसे है? – prasun

+0

यह केवल अलग-अलग भाषा-आधारित है, मैंने सूत्र को और स्पष्ट करने के लिए कुछ चीजों को समझाया। मैंने पायथन 3 का उपयोग किया। यदि आपके पास पाइथन 3 तक पहुंच है तो इसे टाइप करें। एक बार जब आप इसे पाइथन में ले जाते हैं और चलते हैं, तो अपनी पसंदीदा भाषा में ऐसा करना आसान होता है। –

+1

@prasun विशिष्टता एसओ में एक आवश्यकता नहीं है। – EJP