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

यह जांचने के लिए कि कोई संख्या C++ प्रोग्राम में L-R की N श्रेणी में है या नहीं?

इस समस्या में, हमें एक 2-D मैट्रिक्स arr[[2] दिया गया है जिसमें n श्रेणियां (L, R), L-R शामिल हैं। और Q प्रत्येक प्रश्न में एक पूर्णांक मान होता है। हमारा काम यह जांचने के लिए क्वेरीज़ को हल करने के लिए एक प्रोग्राम बनाना है कि कोई संख्या L-R की N रेंज में है या नहीं।

समस्या का विवरण - यहां, हम प्रत्येक प्रश्न को इस प्रकार हल करते हैं कि क्वेरी का प्रत्येक तत्व किसी एक श्रेणी में हो।

उनकी श्रेणियों का ओवरलैपिंग नहीं हो सकता है।

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

इनपुट

arr[n][2] = { {5, 7}, {1, 3}, {9, 12} } n = 3 Q = 2, query = {10, 4}

आउटपुट

Yes
No

स्पष्टीकरण

समस्या को हल करने का एक आसान तरीका प्रत्येक प्रश्न को हल करना और उस सीमा का पता लगाना है जिसमें तत्व निहित हैं। यदि यह सीमा में से किसी एक में निहित है तो सही है अन्यथा झूठी वापसी करें। श्रेणी मानों के आधार पर मैट्रिक्स को छाँटने से मदद मिल सकती है।

एल्गोरिदम

चरण 1 - मैट्रिक्स पंक्तिबद्ध यानी श्रेणी के आधार पर क्रमबद्ध करें।

चरण 2 - सभी प्रश्नों के लिए i -> 0 से Q के लिए लूप।

चरण 2.1 - यदि तत्व किसी भी श्रेणी में स्थित है, अर्थात (arr[i][0] <=q &&arr[i][1]>=q) -> सही लौटें।

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

उदाहरण

#include <iostream>
using namespace std;
bool isPresent(int arr[][2], int n, int element){
   for(int i = 0; i < n; i++){
      if(arr[i][0] <= element && arr[i][1] >= element )
      return true;
   }
   return false;
}
void solveQueries_Range(int arr[][2], int n, int Q, int query[]){
   int temp[2];
   for(int j = 0; j < (n - 1); j++){
      for(int k = (j + 1); k < n; k++)
      if(arr[j][0] > arr[k][0]){
         temp[0] = arr[k][0]; temp[1] = arr[k][1];
         arr[k][0] = arr[j][0]; arr[k][1] = arr[j][1];
         arr[j][0] = temp[0]; arr[j][1] = temp[1];
      }
   }
   for(int i = 0; i < Q; i++ ){
      if(isPresent(arr, n, query[i]))
         cout<<"For Query "<<(i + 1)<<": The number "<<query[i]<<" lies in the range\n";
      else
         cout<<"For Query "<<(i + 1)<<": The number "<<query[i]<<" does not lie in the range\n";
   }
}
int main(){
   int arr[][2] = { {5, 7}, {1, 3}, {9, 12} };
   int n = 3;
   int Q = 2;
   int query[] = { 10, 4 };
   solveQueries_Range(arr, n, Q, query);
   return 0;
}

आउटपुट

For Query 1: The number 10 lies in the range
For Query 2: The number 4 does not lie in the range

  1. प्लस परफेक्ट नंबर की जांच के लिए सी प्रोग्राम

    n अंकों की संख्या के साथ एक संख्या x को देखते हुए, हमारा कार्य यह जांचना है कि दी गई संख्या का प्लस परफेक्ट नंबर है या नहीं। यह जांचने के लिए कि संख्या प्लस परफेक्ट नंबर है, हम प्रत्येक अंक d (d ^ n) की n वीं शक्ति पाते हैं और फिर सभी अंकों का योग करते हैं, यदि योग n के बराबर है तो संख्या प्लस परफेक

  1. C++ में तीन बिंदु समरेखीय हैं या नहीं, यह जांचने के लिए कार्यक्रम

    तीन अलग-अलग महत्वपूर्ण बिंदुओं के साथ दिया गया है और कार्य यह जांचना है कि बिंदु समरेखीय हैं या नहीं। यदि बिंदु एक ही रेखा पर स्थित हों तो बिंदु संरेख कहलाते हैं और यदि वे भिन्न रेखाओं पर होते हैं तो वे संरेख नहीं होते हैं। नीचे दिए गए समरेखीय और असंरेख बिंदुओं की आकृति है। इनपुट x1 = 1, x2 = 2

  1. C++ में idempotent मैट्रिक्स की जांच करने का कार्यक्रम

    एक मैट्रिक्स दिया गया है M[r][c], r पंक्तियों की संख्या को दर्शाता है और c कॉलम की संख्या को दर्शाता है जैसे कि r =c एक वर्ग मैट्रिक्स बनाता है। हमें यह जांचना है कि दिया गया वर्ग मैट्रिक्स एक बेकार मैट्रिक्स . है या नहीं या नहीं। बेकार मैट्रिक्स एक मैट्रिक्स M को बेवकूफ मैट्रिक्स . कहा जाता है य