[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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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);
}
#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); }
#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