ได้รับสตริง str[] งานคือตรวจสอบว่าสตริงมีอักขระพิเศษหรือไม่ และถ้าสตริงมีอักขระพิเศษให้พิมพ์ "สตริงไม่被接受" ไม่งั้นพิมพ์ "สตริง被接受"
อักขระพิเศษคืออักขระที่ไม่ใช่ตัวเลขและไม่ใช่ตัวอักษร เช่น — !@#$%^&*()+=-\][‘;/.,{}|:”<>?`~
ในภาษา C เราจะใช้วิธี if-else เพื่อแก้ปัญหานี้
ตัวอย่าง
อินพุต — str[] = {"tutorials-point"}
เอาต์พุต — สตริงไม่被接受
อินพุต — str[] = {"tutorialspoint"}
เอาต์พุต — สตริง被接受
วิธีการแก้ปัญหา
- วนทั้งสตริง
- ค้นหาอักขระพิเศษ ถ้ามีอักขระพิเศษในสตริง ให้พิมพ์ "สตริงไม่被接受 และ break" ไม่งั้นพิมพ์ "สตริง被接受"
วิธีอื่น
หากเขียนโค้ดใน Java หรือภาษาอื่นที่รองรับนิพจน์ปกติ (regular expressions) แทนที่จะใช้วิธี if-else เราจะใช้นิพจน์ปกติตรวจสอบว่ามีในสตริงที่กำหนดหรือไม่ วิธีนี้ไม่เพียงแต่ง่ายกว่าก็ยังรวดเร็วยิ่งขึ้น
อัลกอริทึม
Start
In function int special_character(char str[], int n)
Step 1: กำหนด i และ flag และตั้ง flag = 0
Step 2: Loop For i = 0 และ i < n และ ++i
ถ้า str[i] เป็นอักขระพิเศษ (!@#$%^&*()-{}[]:;\"'<>./?~`) แล้ว
Print "สตริงไม่被接受"
กำหนด flag = 1
break
Step 3: ถ้า flag == 0 แล้ว Print "สตริง被接受"
In function int main()
Step 1: ประกาศและกำหนด str[] เป็น {"Tutorials-point"}
Step 2: กำหนด n เป็น strlen(str)
Step 3: เรียก special_character(str, n)
Stop
ตัวอย่างโค้ด
#include <stdio.h>
#include <string.h>
int special_character(char str[], int n) {
int i, flag = 0;
for (i = 0; i < n; ++i) {
// ตรวจสอบแต่ละตัวอักษรของสตริงหาอักขระพิเศษ
if (str[i] == '!' || str[i] == '@' || str[i] == '#' || str[i] == '$'
|| str[i] == '%' || str[i] == '^' || str[i] == '&' || str[i] == '*'
|| str[i] == '(' || str[i] == ')' || str[i] == '-' || str[i] == '{'
|| str[i] == '}' || str[i] == '[' || str[i] == ']' || str[i] == ':'
|| str[i] == ';' || str[i] == '"' || str[i] == '\'' || str[i] == '<'
|| str[i] == '>' || str[i] == '.' || str[i] == '/' || str[i] == '?'
|| str[i] == '~' || str[i] == '`') {
printf("สตริงไม่被接受\n");
flag = 1;
break;
}
}
// ถ้าไม่มีอักขระพิเศษ
if (flag == 0) {
printf("สตริง被接受\n");
}
return 0;
}
int main() {
char str[] = {"Tutorials-point"};
int n = strlen(str);
special_character(str, n);
return 0;
}
ผลลัพธ์
หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —
สตริงไม่被接受