Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số dòng cần thiết để viết chuỗi đã cho trong C ++

Chúng ta được cung cấp một chuỗi bảng chữ cái Str và một mảng có chiều rộng [] chứa chiều rộng của tất cả các bảng chữ cái tiếng Anh. Mục tiêu là tìm số dòng cần thiết để in chuỗi này trên một trang có chiều rộng là 10 ký tự. Đồng thời in các ký tự còn lại.

Chúng tôi sẽ duyệt qua chiều rộng kiểm tra chuỗi của ký tự hiện tại và thêm nó, nếu tổng này> =10 số dòng tăng lên.

Hãy cùng hiểu với các ví dụ.

Đầu vào

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};

Đầu ra

Count of lines: 2 Remaining width: 6

Giải thích

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

Đầu vào

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};

Đầu ra

Count of lines: 2 Remaining width: 2

Giải thích

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

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng ta có một chuỗi Str và độ rộng mảng [] không gian của mỗi bảng chữ cái.

  • Hàm numberOfLines (string str, int len, int w []) hiển thị số dòng trong trang và độ rộng của các ký tự ở dòng cuối cùng.

  • Lấy số dòng ban đầu là numoflines =0.

  • Lấy chiều rộng dòng cuối cùng ban đầu là vẫn =0

  • Đảo ngược chuỗi str bằng vòng lặp for.

  • Lấy ký tự hiện tại c là str [i].

  • Kiểm tra chiều rộng của c là num =width [c-’a ’].

  • Thêm số này để duy trì.

  • Nếu còn> =10 dòng tăng dần và cập nhật vẫn là số.

  • In kết quả ở cuối vòng lặp for.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of lines: 3
Remaining width: 1