Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

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


Cho chuỗi Str gồm các chữ cái và mảng widths[] chứa độ rộng của 26 chữ cái tiếng Anh. Mục tiêu: tìm số dòng cần để in chuỗi này trên trang có độ rộng 10 ký tự. Cũng in số ký tự còn lại trên dòng cuối.

Ta duyệt chuỗi, kiểm tra độ rộng ký tự hiện tại và cộng dồn. Nếu tổng >= 10, tăng số dòng.

Hãy hiểu qua 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 dùng trong chương trình

  • Cho chuỗi Str và mảng widths[] độ rộng mỗi chữ cái.
  • Hàm numberOfLines(string str, int len, int w[]) hiển thị số dòng và độ rộng dòng cuối.
  • Khởi tạo numoflines=0, remain=0.
  • Duyệt chuỗi str.
  • Lấy ký tự c = str[i].
  • Lấy độ rộng num = widths[c - 'a'].
  • Cộng num vào remain.
  • Nếu remain >= 10: tăng numoflines, remain = num.
  • In kết quả sau vòng lặp.

Ví dụ

#include <bits/stdc++.h> using namespace std; // Hàm trả về số dòng cần thiết void numberOfLines(string str,int len, int w[]){    int numoflines = 0;    int remain = 0;    //duyệt chuỗi    for (int i=0;i<len;i++){       char c=str[i]; //ký tự hiện tại       int num = w[c - 'a']; //đơn vị cho ký tự hiện tại 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ạy mã trên sẽ cho kết quả:

Count of lines: 3
Remaining width: 1