समस्या
C प्रोग्रामिंग भाषा में पुनरावृत्त फ़ंक्शन (while लूप) का उपयोग करके दी गई संख्या को उल्टे क्रम में कैसे प्रिंट करें?
एल्गोरिदम
चरण 1: चर number, reverse घोषित करें
चरण 2: reverse = 0 से आरंभ करें
चरण 3: जब तक number > 0:
(a) reverse = reverse * 10 + number % 10
(b) number = number / 10
चरण 4: reverse लौटाएं
उदाहरण: संख्या 356789
| चरण | number | number % 10 | reverse (पहले) | reverse = reverse*10 + अंक |
|---|---|---|---|---|
| 1 | 356789 | 9 | 0 | 9 |
| 2 | 35678 | 8 | 9 | 98 |
| 3 | 3567 | 7 | 98 | 987 |
| 4 | 356 | 6 | 987 | 9876 |
| 5 | 35 | 5 | 9876 | 98765 |
| 6 | 3 | 3 | 98765 | 987653 |
| 7 | 0 | - | - | लूप समाप्त |
प्रोग्राम
#include <stdio.h>
int reverse(int number) {
int rev = 0;
while (number > 0) {
rev = rev * 10 + number % 10;
number = number / 10;
}
return rev;
}
int main() {
int number;
printf("एक संख्या दर्ज करें: ");
scanf("%d", &number);
printf("उल्टी संख्या: %d\n", reverse(number));
return 0;
}
आउटपुट
एक संख्या दर्ज करें: 356789
उल्टी संख्या: 987653
महत्वपूर्ण बिंदु
- यह विधि किसी भी लंबाई की पूर्णांक संख्या के लिए काम करती है।
- अंतिम शून्य (trailing zeros) खो जाते हैं:
1200→21(नहीं0021) - ऋणात्मक संख्याओं के लिए, पहले निरपेक्ष मान लें या शर्त जोड़ें।
- बड़ी संख्याओं के लिए
long longका उपयोग करें ताकि ओवरफ्लो न हो।
संस्करण: ऋणात्मक संख्याओं को संभालना
int reverse(int number) {
int rev = 0;
int sign = (number < 0) ? -1 : 1;
number = abs(number);
while (number > 0) {
rev = rev * 10 + number % 10;
number /= 10;
}
return rev * sign;
}