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

C++ में [l, r] रेंज में नहीं आने वाले ASCII मान वाले वर्णों की गिनती और प्रिंट करें


हमें किसी भी लंबाई की एक स्ट्रिंग दी गई है और कार्य स्ट्रिंग में उन वर्णों की गिनती करना और प्रिंट करना है जिनका ASCII मान रेंज [l,r] में नहीं है।

A-Z वर्णों के ASCII मान नीचे दिए गए हैं

ABCDEFGHIJKLMNOPQRS
65666768697071727374757677787980818283


TUVWXYZ
84858687888990

a-z वर्णों के ASCII मान नीचे दिए गए हैं

abcdefghijklmnopqrs
979899100101102103104105106107108109110111112113114115


tuvwxyz
116117118119120121122

उदाहरण के लिए

इनपुट - String str = "point"       First = 111, Last = 117 आउटपुट - दिए गए रेंज में नहीं आने वाले वर्ण हैं: i, n       गिनती: 2

व्याख्या - चूंकि i और n [111, 117] की रेंज में नहीं आते हैं, इसलिए इन वर्णों को गिना जाएगा।

इनपुट - String str = "ABCZXY"       First = 65, Last = 70 आउटपुट - दिए गए रेंज में नहीं आने वाले वर्ण हैं: Z, X, Y       गिनती: 3

व्याख्या - चूंकि Z, X और Y [65, 70] की रेंज में नहीं आते हैं, इसलिए इन वर्णों को गिना जाएगा।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • स्ट्रिंग, प्रारंभ और अंत मान इनपुट करें ताकि रेंज बनाई जा सके और इसे str जैसे चरों में संग्रहीत करें।

  • length() फंक्शन का उपयोग करके स्ट्रिंग की लंबाई की गणना करें जो स्ट्रिंग में स्पेस सहित अक्षरों की संख्या के अनुसार एक पूर्णांक मान लौटाएगा।

  • एक अस्थायी चर लें जो वर्णों की गिनती को संग्रहीत करेगा और एक मैप बनाएं, मान लीजिए mp

  • लूप को i से 0 से शुरू करके i के स्ट्रिंग की लंबाई से कम होने तक शुरू करें

  • लूप के अंदर, जांचें कि क्या start, str[i] के बराबर नहीं है और str[i] end के बराबर नहीं है

  • if के अंदर, जांचें कि क्या mp[str[i]] ! = 1 है तो str[i] प्रिंट करें अन्यथा mp[str[i]] को 1 से बढ़ाएं

  • count लौटाएं

  • परिणाम प्रिंट करें

उदाहरण

#include <iostream>
#include <unordered_map>
using namespace std;

// रेंज [l, r] में नहीं आने वाले ASCII मान वाले वर्णों की संख्या गिनने के लिए
int count_non_char(string str, int left, int right) {
    int count = 0;
    // एक वर्ण को केवल एक बार प्रिंट करने के लिए मैप का उपयोग
    unordered_map<char, int> m;
    int len = str.length();
    for (int i = 0; i < len; i++) {
        if (!(left <= str[i] and str[i] <= right)) {
            count++;
            if (m[str[i]] != 1) {
                cout << str[i] << " ";
                m[str[i]]++;
            }
        }
    }
    // गिनती लौटाएं
    return count;
}

// मुख्य कोड
int main() {
    string str = "tutorialspoint";
    int left = 102, right = 111;
    cout << "Characters and ";
    cout << "\nand count in the given range is: " << count_non_char(str, left, right);
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

Characters and and count in the given range is: t u r a s p 8

  1. C++ प्रोग्राम: sin(x) और cos(x) का मान ज्ञात करना C++ प्रोग्राम: sin(x) और cos(x) का मान ज्ञात करना

    दिए गए कोण (angle) के लिए sin(x) और cos(x) के मान की गणना करना और परिणाम प्रदर्शित करना इस प्रोग्राम का उद्देश्य है। Sin(x) के लिए Sin(x) एक त्रिकोणमितीय फलन है जिसका उपयोग किसी कोण x के मान की गणना के लिए किया जाता है। सूत्र $$\sin (x) = \displaystyle\sum\limits_{k=0}^\infty \frac{(-1)^{k}}{(2k+

  1. - C++ में न्यूनतम धनात्मक पूर्णांक जो C से विभाज्य हो और रेंज [A, B] में न हो

    मान लीजिए हमारे पास तीन पूर्णांक A, B, और C हैं। हमें एक न्यूनतम पूर्णांक X ढूंढना है, जैसे कि X mod C = 0, और X रेंज [A, B] में नहीं है। यदि A, B और C के मान 5, 10 और 4 हैं, तो X का मान 4 होगा। समाधान प्राप्त करने के चरण देखते हैं: चरण − यदि C रेंज [A, B] में नहीं है, तो C को परिणाम के रूप म

  1. - C++ में रेंज [A, B] में C से विभाज्य अधिकतम धनात्मक पूर्णांक

    यहां हम एक दिलचस्प समस्या देखेंगे। मान लीजिए हमारे पास तीन पूर्णांक A, B, और C हैं। हमें एक न्यूनतम पूर्णांक X ढूंढना है, जैसे कि X mod C = 0, और X रेंज [A, B] में नहीं है। यदि A, B और C के मान 5, 10 और 4 हैं, तो X का मान 4 होगा। समाधान प्राप्त करने के चरण: चरण − यदि C रेंज [A, B] में नहीं है