Giả sử ta cần kiểm thử hàm NC sau đây:
Hàm NC (Name Correcting) chuẩn hóa tên ngƣời theo các yêu cầu sau:
YC1: input - string x chứa tên ngƣời, output - string y chứa tên ngƣời (đã đƣợc chuẩn hóa).
YC2: Tên ngƣời sử dụng bảng chữ cái Latin.
YC3: Không có các dấu cách ở đầu và cuối tên y.
YC4: Một tên y có thể gồm nhiều từ, các từ cách nhau đúng một dấu cách.
YC5: Chữ cái đầu từ viết hoa, chữ cái thân từ viết thƣờng.
YC6: Một tên gồm tối đa 100 ký tự. Thí dụ, với tên
x = “ Tran Thi Minh THANH ” sau khi đƣợc chỉnh lí lại sẽ thu đƣợc y = “Tran Thi Minh Thanh”
Dƣới đây là văn bản chƣơng trình cài đặt hàm NC viết bằng ngôn ngữ lập trình trong môi trƣờng devCPP
/*--- ---
NC.CPP Name correcting: Nan lai ten nguoi theo cacs tieu chi 1. Xoa het dau cach hai dau
2. Moi tu cach nhau dung 1 dau cach 3. Chu cai dau tu viet HOA
4. Chu cai than tu viet thuong
---*/ #include <iostream> #include <stdio.h> #include <string.h> using namespace std; void NC(char * s) {
const char BL = 32; // dau cach int i, j, q; // q: bien trang thai int len = strlen(s);
char w[100]; // output
cout << "\n---"; cout << "\n Input: |" << s << "|";
q = 1; j = 0;
for (i = 0; i < len; ++i) { switch(q) {
case 1: // Duyet dau ten if (s[i] != BL) {
w[j++] = toupper(s[i]);
q = 2;
}
break;
break;
case 3: // Duyet cuoi tu if (s[i] != BL) { w[j++] = BL; w[j++] = toupper(s[i]); q = 2; } break; } // switch } // for w[j] = '\0'; cout << "\n Output: |" << w << "|"; cout << "\n---"; } main() { // Test 1 NC(" Le VAn boM "); // Test 2
NC("Huynh Van Quang (Sau Van)"); // Test 3 NC("Ho K'rong"); // Test 4 NC("Napoleon III"); //--- cout << "\n T H E E N D."; return 0; }