समस्या विवरण
एक संख्या n, एक लक्ष्य अंक (x), और एक प्रतिस्थापन अंक (m) दिए गए हैं, n में x के सभी घटनाओं को m से बदलें।
उदाहरण
| संख्या | लक्ष्य | प्रतिस्थापन | परिणाम |
| 983 | 9 | 6 | 683 |
| 123 | 5 | 4 | 123 (कोई परिवर्तन नहीं) |
| 1221 | 2 | 9 | 1991 |
| 1001 | 0 | 5 | 1551 |
एल्गोरिदम (अंकों को पीछे से प्रोसेस करें)
result = 0, place = 1 आरंभ करें
- जब तक
n > 0:
digit = n % 10 (अंतिम अंक प्राप्त करें)
- यदि
digit == target: result += replacement * place
- अन्यथा:
result += digit * place
place *= 10, n /= 10
result लौटाएं
C प्रोग्राम
#include <stdio.h>
long long replace_digit(long long n, int target, int replacement) {
if (target < 0 || target > 9 || replacement < 0 || replacement > 9) {
printf("अंक 0-9 के बीच होने चाहिए\n");
return n;
}
long long result = 0;
long long place = 1;
if (n == 0) {
return (target == 0) ? replacement : 0;
}
while (n > 0) {
int digit = n % 10;
if (digit == target)
result += replacement * place;
else
result += digit * place;
place *= 10;
n /= 10;
}
return result;
}
int main() {
long long n;
int target, replacement;
printf("संख्या दर्ज करें: ");
scanf("%lld", &n);
printf("बदलने वाला अंक (0-9): ");
scanf("%d", &target);
printf("नया अंक (0-9): ");
scanf("%d", &replacement);
long long result = replace_digit(n, target, replacement);
printf("परिणाम: %lld\n", result);
return 0;
}
नमूना आउटपुट
संख्या दर्ज करें: 983
बदलने वाला अंक (0-9): 9
नया अंक (0-9): 7
परिणाम: 783
स्ट्रिंग-आधारित दृष्टिकोण (सरल, बड़ी संख्याओं को संभालता है)
#include <stdio.h>
#include <string.h>
void replace_digit_string(char *num, char target, char replacement) {
for (int i = 0; num[i]; i++) {
if (num[i] == target)
num[i] = replacement;
}
}
int main() {
char num[100];
char target, replacement;
printf "संख्या दर्ज करें: ";
scanf("%s", num);
printf "लक्ष्य अंक: ";
scanf(" %c", &target);
printf "प्रतिस्थापन अंक: ";
scanf(" %c", &replacement);
replace_digit_string(num, target, replacement);
printf("परिणाम: %s\n", num);
return 0;
}
तुलना
| पहलू | अंकगणितीय | स्ट्रिंग-आधारित |
| बड़ी संख्याएं | long long तक सीमित | कोई सीमा नहीं |
| अग्रणी शून्य | खो जाते हैं | संरक्षित |
| ऋणात्मक संख्याएं | अतिरिक्त संभाल की आवश्यकता | आसान ('-' संरक्षित) |
| प्रदर्शन | तेज़ | थोड़ा धीमा |
किनारे के मामले
- ऋणात्मक संख्या: चिह्न संरक्षित करें, निरपेक्ष मान पर काम करें
- लक्ष्य == प्रतिस्थापन: कोई परिवर्तन नहीं
- सभी अंक समान: पूरी संख्या बदल जाती है
- अग्रणी शून्य परिणाम: अंकगणितीय दृष्टिकोण उन्हें हटा देता है