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

C++ प्रोग्राम किसी कैरेक्टर की सबसे छोटी दूरी ढूंढने के लिए

एक स्ट्रिंग 'a' और एक कैरेक्टर 'char' दिया गया है, कार्य दिए गए स्ट्रिंग के प्रत्येक कैरेक्टर से 'char' की दूरी प्रिंट करना है। दूरी एरे का आकार स्ट्रिंग के आकार के समान है, क्योंकि हमें दिए गए स्ट्रिंग के प्रत्येक कैरेक्टर से कैरेक्टर की दूरी ढूंढनी है।

उदाहरण के लिए

इनपुट-1:

a = "tutorialspoint"
char = "o"

आउटपुट: 

[ 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3]

व्याख्या: दिए गए स्ट्रिंग में, स्ट्रिंग के प्रत्येक कैरेक्टर से कैरेक्टर की दूरी [3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3] है।

इनपुट-2:

a = "programmer"
char = "r"

आउटपुट:

[1, 0, 1, 2, 0, 1, 2, 3, 4, 0 ]

व्याख्या: दिए गए स्ट्रिंग में, स्ट्रिंग के प्रत्येक कैरेक्टर से 'r' की दूरी [1, 0, 1, 2, 0, 1, 2, 3, 4, 0 ] है।

इस समस्या को हल करने का दृष्टिकोण

इस समस्या को हल करने का ब्रूट फोर्स दृष्टिकोण दिए गए कैरेक्टर की स्ट्रिंग में स्थिति ढूंढना और एरे में स्टोर करना है। अब पूरी स्ट्रिंग और पोजीशन एरे पर पुनरावृति करें ताकि दिए गए स्ट्रिंग में कैरेक्टर की न्यूनतम दूरी ढूंढी जा सके।

  • एक स्ट्रिंग और एक कैरेक्टर 'char' इनपुट के रूप में लें।
  • एक फ़ंक्शन distanceTochar(string a, char ch) एक स्ट्रिंग और एक कैरेक्टर को इनपुट के रूप में लेता है और दिए गए स्ट्रिंग में प्रत्येक कैरेक्टर से दिए गए कैरेक्टर की दूरी प्रिंट करता है।
  • स्ट्रिंग 'a' पर पुनरावृति करें और दिए गए कैरेक्टर की स्थिति को वेक्टर में स्टोर करें।
  • अब स्ट्रिंग और पोजीशन एरे पर पुनरावृति करें और स्ट्रिंग में कैरेक्टर की दूरी की गणना करें।
  • पोजीशन एरे प्रिंट करें।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
void shortestToChar(string a, char C) {
    vector < int > pos, dist;
    for (int i = 0; i < a.size(); i++) {
        if (a[i] == C)
            pos.push_back(i);
    }
    for (int i = 0; i < a.size(); i++) {
        int mn = INT_MAX;
        for (int j = 0; j < pos.size(); j++) {
            mn = min(mn, abs(pos[j] - i));
        }
        dist.push_back(mn);
    }
    for (auto i: dist) {
        cout << i << " ";
    }
}
int main() {
    string a = "tutorialspoint";
    char ch = 'o';
    shortestToChar(a, ch);
}

उपरोक्त कोड चलाने से आउटपुट इस प्रकार उत्पन्न होगा,

आउटपुट

3 2 1 0 1 2 3 3 2 1 0 1 2 3

स्ट्रिंग "tutorialspoint" में कैरेक्टर 'o' इंडेक्स 3 और इंडेक्स 10 पर मौजूद है। इस प्रकार, यदि हम इसके पहले और बाद के कैरेक्टर्स से इसकी निकटतम दूरी की गणना करते हैं, तो हमें दूरियां [3 2 1 0 1 2 3 3 2 1 0 1 2 3] के रूप में मिलेंगी।

  1. C++ में रेखा का मध्य बिंदु खोजने का प्रोग्राम C++ में रेखा का मध्य बिंदु खोजने का प्रोग्राम

    इस समस्या में, हमें दो बिंदु A और B दिए गए हैं, एक रेखा के प्रारंभिक और अंतिम बिंदु। हमारा कार्य C++ में रेखा का मध्य बिंदु खोजने के लिए एक प्रोग्राम बनाना है। समस्या विवरण यहां, हमारे पास प्रारंभिक और अंतिम बिंदु A(x1, y1) और B(x2, y2) वाली एक रेखा है। और हमें रेखा का मध्य बिंदु ज्ञात करना है। उद

  1. C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें एक 2D ऐरे दिया गया है जो त्रिभुज के तीन शीर्षों के निर्देशांक को दर्शाता है। हमारा कार्य C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम बनाना है।केंद्रक (Centroid) त्रिभुज का वह बिंदु है जहां त्रिभुज की तीनों मध्यिकाएं (medians) प्रतिच्छेद करती हैं।मध्यिका (Median)

  1. C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें दो मान दिए गए हैं जो समानांतर चतुर्भुज के आधार (base) और ऊंचाई (height) को दर्शाते हैं। हमारा कार्य C++ में समानांतर चतुर्भुज (Parallelogram) का क्षेत्रफल ज्ञात करने का प्रोग्राम बनाना है।समानांतर चतुर्भुज (Parallelogram) चार भुजाओं वाली एक बंद आकृति है जिसकी विपरीत भुजाएं समान औ