हमें अक्षरों की एक स्ट्रिंग दी गई है और एक सरणी चौड़ाई [] जिसमें सभी अंग्रेजी अक्षरों की चौड़ाई है। लक्ष्य इस स्ट्रिंग को 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