2012-09-23 12 views
14

मान लें कि मुझे प्रति पंक्ति तत्वों की एक निश्चित संख्या प्रदर्शित करने के लिए किसी सरणी के आउटपुट को प्रारूपित करने की आवश्यकता है। मैं मॉड्यूलस ऑपरेशन का उपयोग कर ऐसा करने के बारे में कैसे जा सकता हूं?मॉड्यूलस ऑपरेटर कैसे काम करता है?

सी ++ का उपयोग करके, नीचे दिया गया कोड प्रति पंक्ति 6 ​​तत्व प्रदर्शित करने के लिए काम करता है लेकिन मुझे नहीं पता कि यह कैसे और क्यों काम करता है?

for (count = 0 ; count < size ; count++) 
{ 
    cout << somearray[count]; 
    if(count % 6 == 5) cout << endl; 
} 

यदि मैं प्रति पंक्ति 5 तत्व प्रदर्शित करना चाहता हूं तो क्या होगा? मुझे सटीक अभिव्यक्ति की आवश्यकता कैसे मिलती है?

उत्तर

1

यह आपको एक विभाजन का शेष देता है।

int c=11, d=5; 
cout << (c/d) * d + c % d; // gives you the value of c 
1

आप मॉड्यूलस ऑपरेटर के बारे में सोच सकते हैं क्योंकि आपको शेष दिया गया है। गिनती% 6 गिनती से 6 गुणा को जितनी बार कर सकती है उतनी बार विभाजित करती है और आपको 0 से 5 तक शेष देता है (ये सभी संभव रहने वाले हैं क्योंकि आप पहले से ही 6 बार विभाजित कर सकते हैं)। सरणी के तत्व सभी लूप के लिए मुद्रित होते हैं, लेकिन हर बार शेष 5 (प्रत्येक 6 वां तत्व) होता है, यह एक न्यूलाइन चरित्र आउटपुट करता है। यह आपको प्रति पंक्ति 6 ​​तत्व देता है। प्रत्येक पंक्ति में 5 तत्वों के लिए, का उपयोग

अगर (गिनती% 5 == 4)

23
ख से एक के विभाजन की सी ++ अभिव्यक्ति a % b रिटर्न शेष में

(अगर वे सकारात्मक रहे हैं। ऋणात्मक संख्याओं पर हस्ताक्षर के लिए परिणाम का कार्यान्वयन परिभाषित किया गया है)। उदाहरण के लिए:

5 % 2 = 1 
13 % 5 = 3 

इस ज्ञान के साथ हम आपके कोड को समझने का प्रयास कर सकते हैं। हालत count % 6 == 5 का अर्थ है कि विभाजन की शेष राशि 6 ​​से पांच गुना होने पर नई लाइन लिखी जाएगी। किस नियमित अंतराल पर वह घटित होता है? बिल्कुल 6 लाइन अलग (व्यायाम: संख्याओं को लिखें 1..30 और उन लोगों को रेखांकित करें जो इस स्थिति को पूरा करते हैं), 6-वें लाइन (गणना = 5) से शुरू होते हैं।

अपने कोड से वांछित व्यवहार प्राप्त करने के लिए, आपको स्थिति को count % 5 == 4 में बदलना चाहिए, आपको 5-वें लाइन (गिनती = 4) से शुरू होने वाली प्रत्येक 5 लाइनों को नई लाइन क्या देगी।

+3

"नकारात्मक संख्याओं के लिए sig परिणामस्वरूप एन कार्यान्वयन परिभाषित किया गया है "यह सी ++ 11 में सच नहीं है - आईएसओ 14882: 2011 (ई) 5.6-4 या https://stackoverflow.com/questions/7594508 देखें। –

1

यह JSFiddle परियोजना कर सकते हैं आपकी मदद करता है समझने के लिए कैसे मापांक काम: http://jsfiddle.net/elazar170/7hhnagrj

function modulus(x,y){ 
    var m = Math.floor(x/y); 
    var r = m * y; 
    return x - r; 
} 
1

मूल रूप से मापांक ऑपरेटर आप गणित क्या 3 से विभाजित 11 के/शेष पर बचा है में शेष सरल उदाहरण देता है? इस सवाल का जवाब 2

एक ही बात सी ++ मापांक ऑपरेटर ('%')

स्पष्टीकरण

#include <iostream> 
using namespace std; 


int main() 
{ 
    int num = 11; 
    cout << "remainder is " << (num % 3) << endl; 

    return 0; 
} 

के लिए बुनियादी कोड कौन सा प्रदर्शित करेगा है के लिए

है

शेष 2

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