Tìm kiếm và thay thế ký trong tự chuỗi là một thuật toán cơ bản giúp cải thiện tính đồng nhất, sửa lỗi, thay đổi tên biến một cách nhanh chóng dễ dàng. Trong bài viết này, chúng ta sẽ tìm hiểu về cách thực hiện tìm kiếm và thay thế ký tự trong chuỗi trong ngôn ngữ lập trình C++ nhé. Bắt đầu thôi!
Bài trước: [C++] Mảng răng cưa 2 chiều: Cấp phát, khởi tạo và in mảng
1. Bài toán tìm kiếm và thay thế chuỗi
Bài 25 (TH-CSLT-02): Viết chương trình nhập vào một chuỗi ký tự. Yêu cầu:
– Cho biết các vị trí xuất hiện của ký tự x trong chuỗi ký tự vừa nhập. Với ký tự x được nhập từ bàn phím
– Thay thế ký tự x trong chuỗi bằng ký tự y. Với ký tự x, y được nhập từ bàn phím
2. Thuật toán tìm kiếm và thay thế trong chuỗi
Tìm kiếm trong chuỗi ký tự
- Khai báo biến:
char str[100], x, y; int redflag;
Khai báo một mảng ký tựstr
có kích thước 100, hai biến ký tựx
vày
, và một biến nguyênredflag
. cout<<"Nhap chuoi: "; cin>>str;
Yêu cầu người dùng nhập chuỗi ký tự từ bàn phím và lưu trữ vào biếnstr
.cout<<"Nhap ky tu x can tim: "; cin>>x;
Yêu cầu người dùng nhập ký tự cần tìm kiếmx
từ bàn phím.for(int i=0;i<sizeof(str); i++){...}
Sử dụng vòng lặpfor
để duyệt qua từng phần tử trong chuỗistr
. Nếu phần tử hiện tại là ký tựx
, biếnredflag
được đặt bằng 1 và vị trí củax
được in ra màn hình.if(redflag==0){cout<<"Khong tim thay";}
Nếu biếnredflag
không bằng 1, tức là không tìm thấy ký tựx
, thông báo “Không tìm thấy” được in ra màn hình.
Thay thế trong chuỗi
if(redflag==1){cout<<"Nhap ky tu y: "; cin>>y; for(int i=0;i<sizeof(str);i++){...}}
Nếu biếnredflag
bằng 1, tức là tìm thấy ký tựx
, yêu cầu người dùng nhập ký tự thay thếy
từ bàn phím và sử dụng vòng lặpfor
để duyệt qua từng phần tử trong chuỗistr
và thay thế ký tựx
bằng ký tựy
.cout<<"Chuoi sau khi thay the: "<<str;
In ra chuỗi ký tự sau khi đã thay thế ký tựx
bằng ký tựy
.
Lưu ý rằng đoạn code này chỉ hoạt động cho các chuỗi ký tự có độ dài nhỏ hơn hoặc bằng 100 vì kích thước của mảng str
được khai báo là 100.
3. Code hoàn chỉnh
#include<iomanip> #include<iostream> using namespace std; int main(){ char str[100], x, y; int redflag; cout<<"Nhap chuoi: "; cin>>str; cout<<"Nhap ky tu x can tim: "; cin>>x; //tim kiem phan tu x for(int i=0;i<sizeof(str); i++){ if(str[i]==x){ redflag=1; cout<<"Tim thay "<<x<<"tai vi tri "<<i<<endl; } } //hien ra man hinh vi tri if(redflag==0){ cout<<"Khong tim thay"; } //thay the phan tu x if(redflag==1){ cout<<"Nhap ky tu y: "; cin>>y; for(int i=0;i<sizeof(str);i++){ if(str[i]==x){ str[i]=y; } } cout<<"Chuoi sau khi thay the: "<<str; } }
4. Kết quả
Trên đây là đoạn mã tìm kiếm và thay thế kí tự trong chuỗi ngôn ngữ lập trình C++. Cảm ơn các bạn đã theo dõi 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 26 (TH-CSLT-03): Nhập vào một chuỗi bất kỳ, yêu cầu tách chuỗi c++.
Ví dụ: nhập chuỗi str1= “Khoa Công nghệ Thông tin, Viện Đại học Mở Hà Nội”.
Người nhập muốn tách bắt đầu từ chữ “Viện” thì sẽ xuất ra chuỗi “Viện Đại học Mở Hà Nội” ra màn hình.