Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम: संख्या में एक अंक को दूसरे से बदलें

समस्या विवरण

एक संख्या n, एक लक्ष्य अंक (x), और एक प्रतिस्थापन अंक (m) दिए गए हैं, n में x के सभी घटनाओं को m से बदलें।

उदाहरण

संख्यालक्ष्यप्रतिस्थापनपरिणाम
98396683
12354123 (कोई परिवर्तन नहीं)
1221291991
1001051551

एल्गोरिदम (अंकों को पीछे से प्रोसेस करें)

  1. result = 0, place = 1 आरंभ करें
  2. जब तक n > 0:
    • digit = n % 10 (अंतिम अंक प्राप्त करें)
    • यदि digit == target: result += replacement * place
    • अन्यथा: result += digit * place
    • place *= 10, n /= 10
  3. 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 तक सीमितकोई सीमा नहीं
अग्रणी शून्यखो जाते हैंसंरक्षित
ऋणात्मक संख्याएंअतिरिक्त संभाल की आवश्यकताआसान ('-' संरक्षित)
प्रदर्शनतेज़थोड़ा धीमा

किनारे के मामले

  • ऋणात्मक संख्या: चिह्न संरक्षित करें, निरपेक्ष मान पर काम करें
  • लक्ष्य == प्रतिस्थापन: कोई परिवर्तन नहीं
  • सभी अंक समान: पूरी संख्या बदल जाती है
  • अग्रणी शून्य परिणाम: अंकगणितीय दृष्टिकोण उन्हें हटा देता है
  1. C प्रोग्राम: आर्मस्ट्रांग नंबर्स (Armstrong Numbers) C प्रोग्राम: आर्मस्ट्रांग नंबर्स (Armstrong Numbers)

    हमें उपयोगकर्ता द्वारा दर्ज संख्या n की जांच करनी है कि यह आर्मस्ट्रांग संख्या है या नहीं। एक आर्मस्ट्रांग संख्या वह है जिसके अंकों को अंकों की संख्या (क्रम) की घात तक बढ़ाकर उनका योग करने पर मूल संख्या प्राप्त होती है। सूत्र: wxyz... = wⁿ + xⁿ + yⁿ + zⁿ + ... एल्गोरिदम START फंक्शन power(a, b): a^b

  1. C प्रोग्राम: आयत का क्षेत्रफल और परिमाप C प्रोग्राम: आयत का क्षेत्रफल और परिमाप

    एक आयत की लंबाई और चौड़ाई दी गई है, हमें उसका क्षेत्रफल और परिमाप निकालना है। आयत एक 2-D आकृति है जिसमें चार भुजाएं और चार 90° के कोण होते हैं। विपरीत भुजाएं समान होती हैं। विकर्ण भी समान होते हैं। क्षेत्रफल = लंबाई × चौड़ाई परिमाप = 2 × (लंबाई + चौड़ाई) उदाहरण इनपुट: 20 30 आउटपुट: area of rectangl

  1. C प्रोग्राम में दिए गए विकर्ण लंबाई के साथ षट्कोण का क्षेत्रफल C प्रोग्राम में दिए गए विकर्ण लंबाई के साथ षट्कोण का क्षेत्रफल

    समस्या विवरण यहां हम देखेंगे कि विकर्ण लंबाई का उपयोग करके एक षट्कोण का क्षेत्रफल कैसे प्राप्त करें। षट्कोण की विकर्ण लंबाई d है। सूत्र एक नियमित षट्कोण के आंतरिक कोण 120° प्रत्येक होते हैं। सभी आंतरिक कोणों का योग 720° होता है। यदि विकर्ण d है, तो क्षेत्रफल = (3 * √3 * d²) / 8 C++ प्रोग्राम उदाह