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

दिए गए स्ट्रिंग को C++ में लिखने के लिए आवश्यक पंक्तियों की संख्या

हमें अक्षरों की एक स्ट्रिंग दी गई है और एक सरणी चौड़ाई [] जिसमें सभी अंग्रेजी अक्षरों की चौड़ाई है। लक्ष्य इस स्ट्रिंग को 10 वर्णों की चौड़ाई वाले पृष्ठ पर मुद्रित करने के लिए आवश्यक पंक्तियों की संख्या ज्ञात करना है। शेष वर्णों को भी प्रिंट करें।

हम वर्तमान चरित्र की स्ट्रिंग चेक चौड़ाई को पार करेंगे और इसे जोड़ देंगे, यदि यह योग> =10 लाइनों की वृद्धि संख्या।

आइए उदाहरणों से समझते हैं।

इनपुट

Str = "ababababab"
widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};

आउटपुट

Count of lines: 2 Remaining width: 6

स्पष्टीकरण

line 1 : ababab ( 2+1+2+1+2+1 = 3+3+3=9)
line 2 : abab (2+1+2+1)

इनपुट

Str = "bbbbbbbbbbdd"
widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};

आउटपुट

Count of lines: 2 Remaining width: 2

स्पष्टीकरण

line 1 : bbbbbbbbbb (1+1+1+1+1+1+1+1+1+1=10)
line 2 : dd (1+1)

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हमारे पास प्रत्येक वर्णमाला के स्थान की एक स्ट्रिंग स्ट्र और सरणी चौड़ाई [] है।

  • फंक्शन नंबरऑफलाइन्स (स्ट्रिंग स्ट्र, इंट लेन, इंट डब्ल्यू []) पृष्ठ में पंक्तियों की संख्या और अंतिम पंक्ति में वर्णों की चौड़ाई प्रदर्शित करता है।

  • पंक्तियों की प्रारंभिक गणना को numoflines=0 के रूप में लें।

  • प्रारंभिक अंतिम पंक्ति की चौड़ाई को शेष के रूप में लें=0

  • ट्रैवर्स स्ट्रिंग स्ट्र लूप के लिए उपयोग कर रहा है।

  • वर्तमान वर्ण c को str[i] के रूप में लें।

  • c की चौड़ाई को num=width[c-'a'] के रूप में जांचें।

  • बने रहने के लिए इस संख्या को जोड़ें।

  • यदि बनी रहती है>=10 वेतन वृद्धि लाइन गिनती और अद्यतन संख्या के रूप में बने रहते हैं।

  • लूप के अंत में परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
// Function to return the number of lines required
void numberOfLines(string str,int len, int w[]){
   int numoflines = 0;
   int remain = 0;
   //traversing string
   for (int i=0;i<len;i++){
      char c=str[i]; //current character
      int num = w[c - 'a']; //units for current character remain += num;
      if (remain >= 10){
         numoflines+=1;
         remain = num;
      }
   }
   cout<<"Count of lines: "<<numoflines;
   cout<<endl<<"Remaining width: "<<remain;
}
int main(){
   string Str = "abcdefghijklmnop";
   int length=Str.length();
   int widths[] = {2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1};
   numberOfLines(Str,length,widths);
   return 0;
}

आउटपुट

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

Count of lines: 3
Remaining width: 1

  1. C++ में वर्णानुक्रम में सबस्ट्रिंग की संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास लंबाई n की एक स्ट्रिंग है। इसमें केवल बड़े अक्षर होते हैं। हमें उन सबस्ट्रिंग्स की संख्या ज्ञात करनी है जिनका वर्ण वर्णानुक्रम में घटित हो रहा है। सबस्ट्रिंग का न्यूनतम आकार 2 होगा। इसलिए यदि स्ट्रिंग इस तरह है:REFJHLMNBV, और सबस्ट्रिंग गिनती 2 है, तो वे EF और MN हैं। तो इसे

  1. C++ . में दिए गए स्ट्रिंग में "1(0+)1" के सभी पैटर्न खोजें

    मान लीजिए कि एक स्ट्रिंग में 1(0+)1 जैसे पैटर्न हैं। जहां (0+) 1s की गैर-रिक्त लगातार घटनाओं को इंगित करता है। हमें सभी पैटर्न खोजने होंगे। पैटर्न ओवरलैप कर सकते हैं। स्ट्रिंग जरूरी नहीं कि एक बाइनरी स्ट्रिंग हो। यह केवल अंक और लोअरकेस वर्ण धारण कर सकता है। मान लीजिए कि स्ट्रिंग 1101001 की तरह है, त

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

    हम एक स्ट्रिंग के पात्रों को अलग-अलग क्रम में व्यवस्थित कर सकते हैं। यहां हम देखेंगे कि हम कैसे गिन सकते हैं कि किसी दिए गए स्ट्रिंग से कितने क्रमपरिवर्तन बन सकते हैं। हम जानते हैं कि यदि एक स्ट्रिंग abc है। इसमें तीन वर्ण हैं; हम उन्हें 3 में व्यवस्थित कर सकते हैं! =6 अलग-अलग तरीके। तो n वर्णों वा