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

सी ++ प्रोग्राम वेक्टर का उपयोग करके स्ट्रिंग मिलान को लागू करने के लिए

यह एक और स्ट्रिंग मिलान विधि है। इस दृष्टिकोण में, हम वैक्टर का उपयोग करके एक सबस्ट्रिंग की खोज कर रहे हैं।

सी ++ में हम मानक पुस्तकालय का उपयोग करके आसानी से वैक्टर बना सकते हैं। हम मुख्य स्ट्रिंग और स्ट्रिंग ले रहे हैं जिसे एक वेक्टर के रूप में खोजा जाएगा, फिर इसे मुख्य स्ट्रिंग में खोजा जाएगा। जब एक मैच मिलता है तो फ़ंक्शन पता देता है, और इसे मुख्य स्ट्रिंग से हटा देता है। तो अगले पुनरावृत्ति में, यह स्थान 0 से शुरू होता है और फिर से खोज करता है।

कई घटनाओं के लिए, हम लूप का उपयोग कर रहे हैं और बार-बार मैच की खोज कर रहे हैं, और स्थिति वापस कर रहे हैं।

Input: Main String: “ABAAABCDBBABCDDEBCABC”, Pattern “ABC”
Output: Pattern found at position: 4
Pattern found at position: 10
Pattern found at position: 18

एल्गोरिदम

vector_pattern_search(main, substr)

इनपुट - मुख्य टेक्स्ट और सबस्ट्रिंग।

आउटपुट − वह स्थान जहां पैटर्न पाए जाते हैं

Begin
   p := starting point of the main string
   while r is not at the end of substr and p is not at the end of main, do
      r := starting of substr
      while item at position p & r are not same, and p in main, do
         p := p + 1
         i := i + 1
      done
      q := p
      while item at pos p & r are same, and r in substr and p in main, do
         p := p + 1
         i := i + 1
         r := r + 1
      done
      if r exceeds the substr, then
         delete first occurrence of substr from main
         return the position where substr is found

      if p exceeds main string, then
         return 0
         q := q + 1
         p := q
   done
End

उदाहरण कोड

#include <iostream>
#include <string>
#include <vector>
using namespace std;

void take_string(vector<char> &string){
   char c;
   while(true){
      c = getchar();
      if(c == '\n'){
         break;
      }
      string.push_back(c);
   }
}

void display(vector<char> string){
   for(int i = 0; i<string.size(); i++){
      cout << string[i];
   }
}

int match_string(vector<char>& main, vector<char> substr){
   vector<char>::iterator p,q, r;
   int i = 0;

   p = main.begin();

   while (r <= substr.end() && p <= main.end()){
      r = substr.begin();
      while (*p != *r && p < main.end()){
         p++;
         i++;
      }
      q = p;

      while (*p == *r && r <= substr.end() && p<=main.end()){
         p++;
         i++;
         r++;
      }

      if (r >= substr.end()){
         main.erase(main.begin(), q + 1);
         return (i - substr.size() + 1);
      }

      if (p >= main.end())
         return 0;
         p = ++q;
   }
}

आउटपुट

Enter main String: C++ is programming language. It is object oriented language
Enter substring to find: language

Match found at Position = 20
Match found at Position = 52

  1. सी ++ प्रोग्राम लिंक्ड लिस्ट का उपयोग करके स्टैक को लागू करने के लिए

    स्टैक एक सार डेटा संरचना है जिसमें तत्वों का संग्रह होता है। स्टैक LIFO तंत्र को लागू करता है यानी अंत में धकेले जाने वाले तत्व को पहले पॉप आउट किया जाता है। स्टैक में कुछ सिद्धांत संचालन हैं - पुश - यह स्टैक के शीर्ष पर डेटा मान जोड़ता है। पॉप - यह स्टैक के शीर्ष पर डेटा मान को हटा देता है।

  1. सी ++ प्रोग्राम सरणी का उपयोग करके स्टैक को लागू करने के लिए

    स्टैक एक सार डेटा संरचना है जिसमें तत्वों का संग्रह होता है। स्टैक LIFO तंत्र को लागू करता है यानी अंत में धकेले जाने वाले तत्व को पहले पॉप आउट किया जाता है। स्टैक में कुछ सिद्धांत संचालन हैं - पुश - यह स्टैक के शीर्ष पर डेटा मान जोड़ता है। पॉप - यह स्टैक के शीर्ष पर डेटा मान को हटा देता है

  1. सी ++ प्रोग्राम रिकर्सन का उपयोग करके एक वाक्य को उलटने के लिए

    एक स्ट्रिंग एक आयामी वर्ण सरणी है जिसे एक शून्य वर्ण द्वारा समाप्त किया जाता है। एक स्ट्रिंग के विपरीत विपरीत क्रम में एक ही स्ट्रिंग है। उदाहरण के लिए। Original String: Apple is red Reversed String: der si elppA एक प्रोग्राम जो रिकर्सन का उपयोग करके एक स्ट्रिंग के रूप में एक वाक्य को उलट देता है,