ได้รับสตริงผสมพิมพ์เล็ก-ใหญ่ แปลงตัวอักษรแรกของแต่ละคำเป็นพิมพ์ใหญ่ ส่วนที่เหลือเป็นพิมพ์เล็ก
เช่น "hElLo world" → "Hello World"
ตัวอย่าง
Input: "heLlO wORLD" Output: Hello World Input: "sUNIDHi bAnSAL" Output: Sunidhi Bansal
แนวทาง (ใช้ ASCII)
- ASCII: 'A'-'Z' = 65-90, 'a'-'z' = 97-122
- วนลูปทุกตัวอักษร
- ถ้าเป็นตัวแรกของสตริง หรือ ตัวแรกหลัง space → ถ้าเป็นพิมพ์เล็ก (a-z) แปลงเป็นพิมพ์ใหญ่: char + ('A' - 'a')
- มิฉะนั้น ถ้าเป็นพิมพ์ใหญ่ (A-Z) แปลงเป็นพิมพ์เล็ก: char + ('a' - 'A')
อัลกอริทึม
Start
ฟังก์ชัน firstupper(str[], n):
for i = 0 ถึง n-1:
if (i==0 && str[i]!=' ') || (str[i]!=' ' && str[i-1]==' '):
if str[i] >= 'a' && str[i] <= 'z':
str[i] = str[i] + ('A' - 'a')
else if str[i] >= 'A' && str[i] <= 'Z':
str[i] = str[i] + ('a' - 'A')
main():
str[] = "sUNIDHi bAnSAL"
n = sizeof(str)/sizeof(str[0])
firstupper(str, n)
printf("%s", str)
Stop
โค้ดตัวอย่าง
#include <stdio.h>
int firstupper(char str[], int n) {
for (int i = 0; i < n; i++) {
if (i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ') {
if (str[i] >= 'a' && str[i] <= 'z')
str[i] = (char)(( 'A' - 'a') + str[i]);
} else if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = (char)(str[i] + ('a' - 'A'));
}
}
return 0;
}
int main() {
char str[] = "sUNIDHi bAnSAL";
int n = sizeof(str) / sizeof(str[0]);
firstupper(str, n);
printf("%s\n", str);
return 0;
}
ผลลัพธ์
Sunidhi Bansal