[C++] Nhập bài thơ gồm N câu đặt trong các khổ thơ

Chương trình nhập bài thơ gồm n câu đặt trong các khổ thơ c++. Mời ae thưởng thức.

Bài trước: Bài 26: tách từ trong chuỗi c++

1. Bài toán

Bài 27 (TH-CSLT-05): Nhập vào 1 bài thơ gồm N câu thơ đặt trong các khổ thơ ngăn cách nhau bởi 1 dòng trống (N nhập từ bàn phím). Hiện bài thơ ra màn hình.
1. Nhập vào 1 số k (với điều kiện 1<= k <=số khổ của bài thơ vừa nhập), hiện khổ thơ thứ k ra màn hình.
2. Nhập vào một vần sA (VD: sA=“ưa”), hiện ra các câu thơ có chứa vần sA đó

Xem thêm:  tìm kiếm và thay thế ký tự trong chuỗi

2. Phân tích yêu cầu bài toán

– Bài toán yêu cầu:

  1. Nhập bài thơ gồm n câu thơ đặt trong các khổ thơ
  2. Hiển thị bài thơ ra màn hình
  3. Hiện khổ thơ thứ k
  4. Hiển thị câu thơ chứa vần sA bạn nhập vào

– Ý tưởng thực hiện

2.1 Nhập bài thơ gồm n câu thơ đặt trong các khổ thơ

  • Sử dụng đối tượng String để lưu trữ chuỗi ký tự vì đối tượng string không có độ dài cố định và có thể tự mở rộng theo nhu cầu.
  • Sử dụng cấu trúc do{..}while(), switch…case để thực hiện nhập các khổ thơ.
  • Nhập n vào từ bàn phím, sử dụng cin.ignore() để đọc và loại bỏ ký tự trong bộ nhớ đệm.
  • Duyệt vòng lặp và thực hiện gán câu thơ vào khổ thơ.
  • Kiểm tra nếu i<n-1 thì thêm “\n” để xuống dòng, ngược lại gán khổ thơ vào vị trí m của bài thơ và tăng m.

2.2 Hiển thị bài thơ ra màn hình

  • Duyệt mảng bài thơ và xuất lần lượt các khổ thơ.

2.3 Hiển thị khổ thơ thứ k

  • Nhập k từ bàn phím
  • Nếu thoả mãn điều kiện 1<= k <=số khổ của bài thơ vừa nhập thì xuất ra màn hình khổ thơ k-1

2.4 Hiển thị câu thơ chứa vần sA nhập vào từ bàn phím

  • Tạo mảng a, gán mỗi câu thơ vào mảng.
  • Nhập vần sA từ bàn phím.
  • Duyệt mảng, nếu tìm thấy vần sA thì xuất ra câu thơ ra màn hình. Ngược lại thông báo ra màn hình không tìm thấy.

3. Code

#include <iostream>
using namespace std;

int main(){
    string baiTho[100];
    string khoTho;
    string cauTho;
    string a[100];
    int n, chon, m=0, q=0;

    do{
        //menu
        cout<<"1. Nhap kho tho"<<endl;
        cout<<"2. Hien thi bai tho"<<endl;
        cout<<"3. Hien thi kho tho thu k"<<endl;
        cout<<"4. Hien thi van sA nhap vao tu ban phim"<<endl;
        cin>>chon;
        cin.ignore();

        switch(chon){
            case 1: {
                cout<<"Nhap so cau tho n: ";
                cin>>n;
                cin.ignore(); // đọc và loại bỏ ký tự còn trong bộ nhớ đệm

                for(int i=0;i<n;i++){

                    cout<<" Nhap cau tho thu "<<i+1<<": ";
                    getline(cin, cauTho);

                    khoTho+=cauTho;// gán câu thơ vào khổ thơ

                    // gán câu thơ vào mảng
                    a[q]=cauTho;
                    q++;

                    //xuống dòng câu thơ
                    if (i < n-1) {
                        khoTho += "\n";
                    }else{
                        //gán khổ thơ vào bài thơ
                        baiTho[m]= khoTho;
                        m++;
                        khoTho="";
                    }
                }
            }
            break;

            case 2: {
                cout<<" Bai tho: "<<endl;
                for(int i=0;i<m;i++){
                    cout<<baiTho[i]<<"\n\n";
                }
            }
            break;

            case 3: {
                int k;

                cout<<" Nhap kho tho thu k: ";
                cin>>k;

                if(1<=k<=m){
                    cout<<"Kho tho thu "<< k << "la: "<<endl;
                    cout<<baiTho[k-1];
                }else{
                    cout<<" K khong hop le.";
                }
             }
            break;

            case 4: {
                string sA;
                int pos=-1;
                cout<<"Nhap van sA: ";
                getline(cin,sA);
                for(int i=0;i<q;i++){
                    pos = a[i].find(sA);
                    if(pos>=0){
                        cout <<a[i]<< endl;
                    }
                }
                if(pos<0){
                    cout<<"Khong tim thay"<<endl;
                }
            }
            break;
            default:
                cout<<" moi chon lai"<<endl;
                break;
        }
    }while(chon!=0);
}

4. Kết quả

  • Nhập bài thơ

Nhập bài thơ gồm N câu đặt trong các khổ thơ

  • Hiển thị bài thơ

  • Hiển thị khổ thơ thứ k và tìm kiếm câu thơ chứa vần sA

Trên đây là đoạn mã viết chương trình đưa ra màn hình 4 câu thơ c++. Cảm ơn các bạn đã tham khảo trên ttnguyen.net.

Bài tiếp theo: Bài 28: chuẩn hoá xâu ký tự c++

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em