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

C प्रोग्राम में संख्या को 2^X - 1 के रूप में बनाने के चरण प्रिंट करें


समस्या विवरण

एक संख्या n दी गई है, हमें XOR ऑपरेशन का उपयोग करके संख्या को 2^X - 1 के रूप में बनाने के चरण प्रिंट करने हैं।

  • विषम चरण में संख्या को किसी 2^M - 1 के साथ XOR करें, जहां M आपके द्वारा चुना जाता है।
  • सम चरण में संख्या को 1 से बढ़ाएं।

चरणों को तब तक करते रहें जब तक n, 2^X - 1 का रूप न ले ले, और सभी चरण प्रिंट करें।

उदाहरण

इनपुट: 22
आउटपुट:
चरण 1: 15 के साथ XOR
चरण 2: 1 से बढ़ाएं
चरण 3: 7 के साथ XOR
चरण 4: 1 से बढ़ाएं
चरण 5: 1 के साथ XOR

इनपुट: 7
आउटपुट: कोई चरण करने की आवश्यकता नहीं

एल्गोरिदम

int find_leftmost_unsetbit(int n)
शुरुआत
चरण 1: ind = -1, i = 1 घोषित और असाइन करें
चरण 2: जब तक n लूप
    यदि !(n & 1) तो
        ind को i असाइन करें
    अंत यदि
    i को 1 से बढ़ाएं
    n को 1 से बाएं शिफ्ट करें
अंत लूप
चरण 3: ind वापस करें
रोकें

void perform_steps(int n)
शुरुआत
चरण 1: left = find_leftmost_unsetbit(n) घोषित और असाइन करें
चरण 2: यदि left == -1 तो
    "कोई चरण करने की आवश्यकता नहीं" प्रिंट करें
    वापस करें
अंत यदि
चरण 3: step = 1 घोषित और असाइन करें
चरण 4: जब तक find_leftmost_unsetbit(n) != -1 लूप
    यदि step % 2 == 0 तो
        n को 1 से बढ़ाएं
        "चरण n: 1 से बढ़ाएं" प्रिंट करें
    अन्यथा
        m = find_leftmost_unsetbit(n) घोषित और असाइन करें
        num = (pow(2, m) - 1) सेट करें
        n = n ^ num सेट करें
        "चरण N: num के साथ XOR" प्रिंट करें
    अंत यदि
    step को 1 से बढ़ाएं
अंत लूप
रोकें

C प्रोग्राम उदाहरण

#include <stdio.h>
#include <math.h>

// बाएं सबसे अनसेट बिट खोजने के लिए
int find_leftmost_unsetbit(int n){
    int ind = -1;
    int i = 1;
    while (n) {
        if (!(n & 1))
            ind = i;
        i++;
        n >>= 1;
    }
    return ind;
}

void perform_steps(int n){
    int left = find_leftmost_unsetbit(n);
    if (left == -1) {
        printf("कोई चरण करने की आवश्यकता नहीं\n");
        return;
    }
    int step = 1;
    while (find_leftmost_unsetbit(n) != -1) {
        if (step % 2 == 0) {
            n += 1;
            printf("चरण %d: 1 से बढ़ाएं\n", step);
        } else {
            int m = find_leftmost_unsetbit(n);
            int num = (int)(pow(2, m) - 1);
            n = n ^ num;
            printf("चरण %d: %d के साथ XOR\n", step, num);
        }
        step += 1;
    }
}

int main(){
    int n = 22;
    perform_steps(n);
    return 0;
}

आउटपुट

उपरोक्त प्रोग्राम चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:

चरण 1: 15 के साथ XOR
चरण 2: 1 से बढ़ाएं
चरण 3: 7 के साथ XOR
चरण 4: 1 से बढ़ाएं
चरण 5: 1 के साथ XOR
  1. C में ठोस और खोखले रॉम्बस पैटर्न प्रिंट करने का प्रोग्राम C में ठोस और खोखले रॉम्बस पैटर्न प्रिंट करने का प्रोग्राम

    प्रोग्राम विवरण नीचे दिखाए अनुसार ठोस और खोखले रॉम्बस पैटर्न प्रिंट करें: एल्गोरिदम खोखले रॉम्बस के लिए - उपयोगकर्ता से खोखले रॉम्बस के लिए पंक्तियों की संख्या स्वीकार करें उपयोगकर्ता द्वारा निर्दिष्ट समान पंक्तियों वाला खोखला रॉम्बस बनाएं पहली पंक्ति प्रिंट करें जिसमें पंक्तियों की संख्या के बरा

  1. C में नंबर पैटर्न प्रिंट करने का प्रोग्राम C में नंबर पैटर्न प्रिंट करने का प्रोग्राम

    प्रोग्राम विवरण एक न्यूमेरिकल पैटर्न संख्याओं का एक क्रम है जिसे एक नियम के आधार पर बनाया गया है जिसे पैटर्न नियम कहा जाता है। पैटर्न नियम क्रम में लगातार संख्याओं के बीच संबंध का वर्णन करने के लिए एक या अधिक गणितीय संक्रियाओं का उपयोग कर सकते हैं। पैटर्न 1 1 2 6 3 7 10 4 8 11 13 5 9 12 14 15 पैट

  1. C में वर्ग मैट्रिक्स को Z रूप में प्रिंट करने का प्रोग्राम C में वर्ग मैट्रिक्स को Z रूप में प्रिंट करने का प्रोग्राम

    प्रोग्राम विवरण वर्ग मैट्रिक्स के तत्वों को Z रूप में प्रिंट करें। एक वर्ग मैट्रिक्स वह मैट्रिक्स है जिसमें पंक्तियों और कॉलम की संख्या समान होती है। n-by-n मैट्रिक्स को क्रम n का वर्ग मैट्रिक्स कहा जाता है। एल्गोरिदम वर्ग मैट्रिक्स के तत्वों को Z रूप में प्रिंट करने के लिए हमें मैट्रिक्स की पहली