1. परिचय
सी भाषा मा प्रोग्रामिङ गर्दा, विभिन्न गणनाहरूलाई प्रभावकारी रूपमा गर्नका लागि अपरेटरहरू उपलब्ध छन्। त्यस मध्ये, “बाँकी” वा “शेष अपरेटर” को रूपमा चिनिने %
अपरेटर विशेष गणनामा अत्यन्त उपयोगी हुन्छ। उदाहरणका लागि, विषम र सम सङ्ख्याको पहिचान, यादृच्छिक मानको सीमा, समय गणना आदि विभिन्न परिस्थितिहरूमा प्रयोग गरिन्छ। यस लेखमा, सी भाषा मा बाँकीको गणना विधि र वास्तविक प्रोग्राममा यसको प्रयोगका उदाहरणहरूलाई विस्तृत रूपमा व्याख्या गर्नेछौं।
2. मूल अवधारणाको व्याख्या
2.1 बाँकी निकाल्ने तरिका
C भाषामा, पूर्णांकहरू बीचको बाँकी निकाल्नको लागि %
अपरेटर प्रयोग गरिन्छ। यो अपरेटरले पूर्णांक1 लाई पूर्णांक2 ले भाग गर्दा बाँकी फिर्ता गर्छ। विशिष्ट कोड उदाहरण हेर्दै देखौं।
#include <stdio.h>
int main(void){
int x = 10;
int y = 3;
int remainder = x % y;
printf("%dn", remainder); // आउटपुट: 1
return 0;
}
यस कोडमा, 10 % 3
को परिणाम स्वरूप 1
प्रिन्ट हुन्छ। यो 10 लाई 3 ले भाग गर्दा बाँकी 1 भएको कारण हो। % अपरेटर पूर्णांकमा मात्र प्रयोग गर्न सकिन्छ, दशमलव भाग समावेश भएमा fmod()
फलन प्रयोग गर्नुहोस्।
2.2 फ्लोटिङ पोइन्ट संख्याको बाँकी
दशमलव भागको बाँकी निकाल्नको लागि, C भाषाको मानक पुस्तकालय math.h
मा समावेश गरिएको fmod()
फलन प्रयोग गरिन्छ। यो फ्लोटिङ पोइन्ट संख्याको बाँकी गणना गर्दा उपयोगी हुन्छ।
#include <stdio.h>
#include <math.h>
int main(void){
double x = 7.5;
double y = 2.0;
double remainder = fmod(x, y);
printf("%fn", remainder); // आउटपुट: 1.5
return 0;
}
यस कोडमा, 7.5 % 2.0
को बाँकी अर्थात् 1.5
प्रिन्ट हुन्छ। फ्लोटिङ पोइन्ट संख्याको बाँकी निकाल्दा, यो fmod()
फलन अत्यन्त उपयोगी हुन्छ।

3. मोड्युलो अपरेसनका उदाहरणहरू
3.1 विषम र समको पहिचान
मोड्युलो अपरेसन प्रयोग गरेर, पूर्णांक विषम हो या सम हो सजिलै पहिचान गर्न सकिन्छ। यसको कारण, कुनै पूर्णांकलाई 2 ले भाग गर्दा बाँकी 0 भए सम, 1 भए विषम हुन्छ।
#include <stdio.h>
int main(void){
int number = 5;
if (number % 2 == 0){
printf("%d हो सम संख्या n", number);
} else {
printf("%d हो विषम संख्या n", number);
}
return 0;
}
यस कोडमा, 5 लाई 2 ले भाग गर्दा बाँकी 1 हुन्छ, त्यसैले “5 विषम हो” भनेर आउटपुट हुन्छ। यो मोड्युलो अपरेसन प्रयोग गरेर बनाइएको सरल पहिचान विधिको एक उदाहरण हो।
3.2 पासाको अंकको सिमुलेशन
र्याण्डम संख्यालाई निश्चित दायरा भित्र सीमित गर्न पनि मोड्युलो अपरेसन प्रयोग गर्न सकिन्छ। उदाहरणका लागि, पासाको अंक (1 देखि 6 सम्मको र्याण्डम संख्या) सिमुलेट गर्दा यसलाई प्रयोग गर्न सकिन्छ।
#include <stdio.h>
#include <stdlib.h>
int main(void){
int dice = (rand() % 6) + 1;
printf("डाइसको फेर्ने: %dn", dice);
return 0;
}
यहाँ, rand()
फङ्क्शनले उत्पन्न गरेको र्याण्डम संख्यालाई 6 ले भाग गर्दा बाँकीमा 1 थपेर, 1 देखि 6 सम्मको संख्या प्राप्त गर्न सकिन्छ।
4. मोड्युलो अपरेसनको प्रयोग
4.1 रिंग बफरको कार्यान्वयन
Ring buffer भनेको बफरको अन्त्य र सुरु भाग जडित हुने डेटा संरचना हो। मोड्युलो अपरेसन प्रयोग गर्दा, यस बफरको इन्डेक्स व्यवस्थापन सजिलै गर्न सकिन्छ।
#include <stdio.h>
#define BUFFER_SIZE 4
int buffer[BUFFER_SIZE];
int index = 0;
void put(int data) {
buffer[index] = data;
index = (index + 1) % BUFFER_SIZE;
}
void printBuffer() {
for (int i = 0; i < BUFFER_SIZE; i++) {
printf("%d ", buffer[i]);
}
printf("n");
}
int main(void) {
put(1);
put(2);
put(3);
put(4);
printBuffer(); // आउटपुट: 1 2 3 4
put(5);
printBuffer(); // आउटपुट: 5 2 3 4
return 0;
}
यहाँ, BUFFER_SIZE
मा मोड्युलो अपरेसन गरेर, इन्डेक्सलाई एरेको दायरा भित्र घुम्ने बनाइन्छ। यो विधि प्रयोग गर्दा, एरेको दायरा पार नगरी डेटा निरन्तर भण्डारण गर्न सकिन्छ।
4.2 लूपभित्रको पुनरावृत्ति प्रक्रिया
लूप प्रक्रियामा पनि, मोड्युलो अपरेसनले विशिष्ट ढाँचामा पुनरावृत्ति प्रक्रिया गर्दा सहयोग पुर्याउँछ।
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0) {
printf("%d 3 को गुणक होn", i);
}
}
return 0;
}
यो कोडमा, 1 देखि 10 सम्मको संख्याहरूमा, 3 को गुणक मात्र पहिचान गरी आउटपुट गरिन्छ। मोड्युलो अपरेसन प्रयोग गरेर, यस प्रकारको विशिष्ट शर्तमा आधारित प्रक्रिया सजिलै गर्न सकिन्छ।
5. अक्सर सोधिने प्रश्नहरू र ध्यान दिनुपर्ने बुँदाहरू
5.1 शून्य विभाजनको समस्या
Modulo operation मा ध्यान दिनुपर्ने बुँदाहरू मध्ये एक हो शून्य विभाजन। यदि हर शून्य हो भने, प्रोग्रामले रनटाइम त्रुटि उत्पन्न गर्छ। त्यसैले, modulo operation गर्दा, हर शून्य नभएको कुरा अनिवार्य रूपमा जाँच्नुपर्छ।
#include <stdio.h>
int main(void) {
int numerator = 10;
int denominator = 0;
if (denominator != 0) {
printf("शेष: %dn", numerator % denominator);
} else {
printf("शून्यबाट भाग गर्न सकिँदैनn");
}
return 0;
}
5.2 चिन्हको ह्यान्डलिङ
Modulo operation मा अर्को ध्यान दिनुपर्ने बुँदा नकारात्मक संख्याहरू समावेश गर्दा चिन्हको ह्यान्डलिङ हो। modulo को परिणामको चिन्ह अंशको चिन्हसँग मेल खान्छ।
#include <stdio.h>
int main(void) {
int x = -10;
int y = 3;
printf("शेष: %dn", x % y); // आउटपुट: -1
return 0;
}
यस उदाहरणमा, -10 लाई 3 ले भाग गर्दा बाँकी -1 हुन्छ, र अंशको नकारात्मक चिन्ह परिणाममा प्रतिबिम्बित हुन्छ।
6. सारांश
यस लेखमा, C भाषा मा बाँकी (modulo) गणना विधि र यसको प्रयोग उदाहरणहरूलाई व्याख्या गरिएको छ। मोड्युलो अपरेसनले, विषम र सम सङ्ख्याको पहिचान, रिंग बफरको कार्यान्वयन, लूप प्रोसेसिङ जस्ता विभिन्न परिस्थितिहरूमा उपयोगी हुन्छ। यी आधारभूत प्रयोगहरूलाई बुझेर, दक्ष र प्रभावकारी प्रोग्रामिङ सम्भव हुन्छ। आगामी प्रोग्रामिङमा, कृपया यी ज्ञानलाई प्रयोग गर्नुहोस्।