Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में बाइनरी सरणी के उप-सरणी के दशमलव मानों के लिए प्रश्न

इस समस्या में, हमें एक बाइनरी ऐरे बिन [] और क्यू क्वेरीज़ दी जाती हैं, जिनमें से प्रत्येक में दो मान एल और आर होते हैं। हमारा काम सी ++ में बाइनरी एरे के सबएरे के दशमलव मानों के लिए सॉल्व क्वेरीज़ बनाने के लिए एक प्रोग्राम बनाना है। मजबूत> ।

समस्या का विवरण - यहां प्रत्येक क्वेरी को हल करने के लिए, हमें दशमलव संख्या को ढूंढना और प्रिंट करना होगा जो कि एल से आर तक सबअरे द्वारा बनाई गई है यानी सबरे [एल...आर]।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

bin[] = {1, 1, 0, 0, 1, 0, 1, 0, 0, 0}
Q = 2
2 5
0 6

आउटपुट

2 101

स्पष्टीकरण

क्वेरी 1 के लिए, गठित उप-सरणी {0, 0, 1, 0} है। यह बाइनरी नंबर 0010 बनाएगा जिसका दशमलव रूपांतरण 2 है।

क्वेरी 2 के लिए, गठित उप-सरणी {1, 1, 0, 0, 1, 0, 1} है। यह बाइनरी नंबर 1100101 बनाएगा जिसका दशमलव रूपांतरण 101 है।

समाधान दृष्टिकोण

एक आसान समाधान इंडेक्स एल से इंडेक्स आर तक बाइनरी स्ट्रिंग को पार करके, बाइनरी नंबर का गठन किया गया है, और फिर दिए गए बाइनरी नंबर को इसके दशमलव समकक्ष में परिवर्तित करें।

हमारे दृष्टिकोण के कार्यान्वयन को दिखाने के लिए कार्यक्रम

उदाहरण

#include <iostream>
#include <math.h>
using namespace std;

int CalcDecimalValue(int bin[], int L, int R) {
   int decimal = 0;
   int j = 0;
   for(int i = R; i >= L; i--){
      decimal += bin[i] * pow(2, j);
      j++;
   }
   return decimal;
}

int main() {
   
   int bin[] = {1, 1, 0, 0, 1, 0, 1, 0, 0, 0};
   int n = sizeof(bin) / sizeof(bin[0]);
   int Q = 2;
   int query[Q][2] = {{2, 5},{0, 6}};
   for(int i = 0; i < Q; i++){
      cout<<"For query "<<(i+1)<<": The decimal value of subarray is "<<CalcDecimalValue(bin, query[i]   [0], query[i][1])<<"\n";
   }
   return 0;
}

आउटपुट

For query 1: The decimal value of subarray is 2
For query 2: The decimal value of subarray is 101

एक और तरीका समस्या को हल करने के लिए पूर्व-गणना सरणी का उपयोग करना है। हम एक प्रीकंप्यूटेड ऐरे बनाएंगे जो (एन-आई)वें इंडेक्स वैल्यू तक बनाए गए दशमलव नंबर को स्टोर करेगा। और प्रश्नों को हल करने के लिए, हम l और r के मान के बीच का अंतर पाएंगे।

सरणी का ith मान बाइनरी से दशमलव रूपान्तरण सूत्र का उपयोग करके पाया जाएगा। इसे दाईं ओर से, यानी n-1 से,

. से लगाना

दशमलवअरे [i] =बिन [i] * 2 ^ (n-1-i) + बिन [i + 1] * 2 ^ (n-1-i + 1) + … बिन [n-1] * 2 ^ ( 0).

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int decimalArray[1000];

void createDecimalArray(int bin[], int n){
   memset(decimalArray, 0, n*sizeof(int));
   decimalArray[n - 1] = bin[n - 1] * pow(2, 0);
   for (int i = n - 2; i >= 0; i--)
   decimalArray[i] = decimalArray[i + 1] + bin[i] * (pow(2,(n - 1 - i)));
}

int CalcDecimalValue(int L, int R, int n){
   if (R != n - 1)
   return (decimalArray[L] - decimalArray[R + 1]) / (pow(2, (n - 1 - R)));
   return decimalArray[L] / (1 << (n - 1 - R));
}

int main(){

   int bin[] = {1, 1, 0, 0, 1, 0, 1, 0, 0, 0};
   int n = sizeof(bin) / sizeof(bin[0]);
   createDecimalArray(bin, n);
   int Q = 2;
   int query[Q][2] = {{2, 5},{0, 6}};
   for(int i = 0; i < Q; i++){
      cout<<"For query "<<(i+1)<<": The decimal value of subarray is "<<CalcDecimalValue(query[i][0],    query[i][1], n)<<"\n";
   }
   return 0;
}

आउटपुट

For query 1: The decimal value of subarray is 2
For query 2: The decimal value of subarray is 101

  1. C++ में ऑक्टल से दशमलव रूपांतरण के लिए कार्यक्रम

    एक इनपुट के रूप में एक ऑक्टल नंबर के साथ दिए गए, कार्य दिए गए ऑक्टल नंबर को एक दशमलव संख्या में बदलना है। कंप्यूटर में दशमलव संख्या को आधार 10 से दर्शाया जाता है और अष्टक संख्या को आधार 8 से 0 से शुरू होकर 7 तक दर्शाया जाता है जबकि दशमलव संख्या 0 – 9 से शुरू होने वाला कोई भी अंक हो सकता है। अष्टक

  1. C++ में दशमलव से बाइनरी रूपांतरण के लिए कार्यक्रम

    एक इनपुट के रूप में एक दशमलव संख्या के साथ दिया गया, कार्य दिए गए दशमलव संख्या को एक बाइनरी संख्या में बदलना है। कंप्यूटर में दशमलव संख्या को आधार 10 के साथ दर्शाया जाता है और बाइनरी संख्या को आधार 2 के साथ दर्शाया जाता है क्योंकि इसमें केवल दो बाइनरी अंक 0 और 1 होते हैं जबकि दशमलव संख्या 0 - 9 से

  1. C++ में द्विआधारी से दशमलव रूपांतरण के लिए कार्यक्रम

    एक इनपुट के रूप में एक बाइनरी नंबर के साथ दिया गया, कार्य दिए गए बाइनरी नंबर को एक दशमलव संख्या में बदलना है। कंप्यूटर में दशमलव संख्या को आधार 10 के साथ दर्शाया जाता है और बाइनरी संख्या को आधार 2 के साथ दर्शाया जाता है क्योंकि इसमें केवल दो बाइनरी अंक 0 और 1 होते हैं जबकि दशमलव संख्या 0 - 9 से शुर