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:
- Nhập bài thơ gồm n câu thơ đặt trong các khổ thơ
- Hiển thị bài thơ ra màn hình
- Hiện khổ thơ thứ k
- 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ơ
- 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.
Tải full bài tập thực hành C/C++ có lời giải:
Bài tiếp theo: Bài 28: chuẩn hoá xâu ký tự c++