Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนบรรทัดที่จำเป็นในการเขียนสตริงที่กำหนดใน C++


เราได้รับสตริง Str ของตัวอักษรและอาร์เรย์ widths[] ที่มีความกว้างของตัวอักษรอังกฤษทั้งหมด เป้าหมายคือหาจำนวนบรรทัดที่จำเป็นในการพิมพ์สตริงนี้บนหน้าที่มีความกว้าง 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)

วิธีการที่ใช้ในโปรแกรมด้านล่าง

  • เรามีสตริง Str และอาร์เรย์ widths[] ของพื้นที่แต่ละตัวอักษร

  • ฟังก์ชัน numberOfLines(string str,int len, int w[]) แสดงจำนวนบรรทัดในหน้าและความกว้างของตัวอักษรในบรรทัดสุดท้าย

  • ตั้งจำนวนบรรทัดเริ่มต้นเป็น numoflines=0

  • ตั้งความกว้างบรรทัดสุดท้ายเริ่มต้นเป็น remain=0

  • ท่องสตริง str ด้วยลูป for

  • รับตัวอักษรปัจจุบัน c เป็น str[i]

  • ตรวจสอบความกว้างของ c เป็น num=width[c-'a']

  • บวก num นี้เข้าไปใน remain

  • ถ้า remain >= 10 เพิ่มจำนวนบรรทัดและอัปเดต remain เป็น num

  • พิมพ์ผลลัพธ์ที่จบลูป for

ตัวอย่าง

#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