Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C แปลงอักษรตัวพิมพ์ใหญ่ในประโยค


กำหนดสตริงและตัวพิมพ์เล็กแบบผสม เช่น ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ภารกิจคือการแอบแฝงอักขระตัวแรกเพื่อวางตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็กหากเป็นตัวพิมพ์ใหญ่

มาทำความเข้าใจอย่างลึกซึ้งโดยใช้ตัวอย่างง่ายๆ

เช่นเดียวกับที่เราได้รับสตริง “hElLo world” เราต้องแปลงอักขระตัวแรก 'h' ซึ่งอยู่ในตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ 'H' และพักตัวอักษรทั้งหมดก่อนช่องว่างหรือจุดสิ้นสุดของสตริงเป็นตัวพิมพ์เล็ก

ยิ่งกว่านั้นเมื่อเราพบอักขระตัวแรกหลังจากเว้นวรรคเราต้องแปลงเป็นตัวพิมพ์ใหญ่

ตัวอย่าง

Input: str[] = {“heLlO wORLD”}
Output: Hello World
Input: str[] = {"sUNIDHi bAnSAL"}
Output: Sunidhi Bansal

แนวทางที่ใช้ด้านล่างมีดังนี้

  • เพื่อแก้ปัญหานี้ เราจะใช้ค่า ASCII ของอักขระ
  • ASCII ย่อมาจาก American Standards Code for Information Interchange หมายความว่าทุกตัวอักษรมีโค้ดที่เกี่ยวข้องกัน เช่นเดียวกับตัวพิมพ์ใหญ่ A-Z จะได้รับค่าตัวเลขตั้งแต่ 65-90 และตัวพิมพ์เล็ก a-z จะได้รับตัวเลขตั้งแต่ 97-122 ดังนั้นเราจะใช้ค่าเหล่านี้เพื่อแก้ปัญหาของเรา
  • เราจะสำรวจทั้งสตริงและ
  • ตรวจสอบว่าอักขระตัวแรกหรืออักขระที่อยู่ติดกันหลังจากเว้นวรรค '' อยู่ในช่วง a-z หรือไม่ จากนั้นเราจะลบค่า ASCII ของ 'A' และ 'a' จากนั้นจึงเพิ่มผลลัพธ์ให้กับอักขระนั้น
  • หากไม่ใช่อักขระตัวแรกหรืออักขระต่อจากช่องว่าง เราต้องตรวจสอบว่าอักขระเป็นตัวพิมพ์ใหญ่หรือไม่ จากนั้นแปลงเป็นตัวพิมพ์เล็ก ให้เพิ่มค่าของอักขระลงในผลลัพธ์ของการลบ 'a' - 'A'

อัลกอริทึม

Start
In Function int firstupper(char str[], int n)
   Step 1-> Initialize int i
   Step 2-> Loop For i = 0 And i<n And i++
      If i == 0 && str[i] != ' ' || str[i] != ' ' && str[i-1] == ' ' then,
         If str[i] >= 'a' && str[i]<='z' then,
            str[i] = (char)(('A'-'a') + str[i] )
         End If
         Else If str[i] >= 'A' && str[i] <= 'Z' then,
            str[i] = (char)(str[i] + ('a' - 'A'))
         End If
      End Function
In Function int main(int argc, char const *argv[])
   Step 1-> Declare and initialize char str[] = {"sUNIDHi bAnSAL"}
   Step 2-> Declare n set as sizeof(str)/sizeof(str[0])
   Step 3-> firstupper(str, n)
   Step 4-> Print "%s\n", str
End main

ตัวอย่าง

#include <stdio.h>
int firstupper(char str[], int n) {
   int i;
   for(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(int argc, char const *argv[]) {
   char str[] = {"sUNIDHi bAnSAL"};
   int n = sizeof(str)/sizeof(str[0]);
   firstupper(str, n);
   printf("%s\n", str);
   return 0;
}

ผลลัพธ์

Sunidhi Bansal