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

ตรวจหาตัวพิมพ์ใหญ่ในสตริงที่กำหนดโดยใช้ C++


สมมติว่าเรามีสตริง 'str' ซึ่งประกอบด้วยอักขระบางตัวในนั้น งานคือการตรวจสอบว่าสตริงที่กำหนดมีอักขระทั้งหมดเป็นตัวพิมพ์ใหญ่หรือไม่และคืนค่า True หรือ False ตามลำดับ ตัวอย่างเช่น

อินพุต-1

str = “INDIA”

ผลผลิต

True

คำอธิบาย − เนื่องจากอักขระทั้งหมดของสตริงอินพุตเป็นตัวพิมพ์ใหญ่ เราจะคืนค่า true ในกรณีนี้

อินพุต-2

str = “Programmer”

ผลผลิต

False

คำอธิบาย − เนื่องจากอักขระทั้งหมดของสตริงอินพุตไม่อยู่ในตัวพิมพ์ใหญ่ ยกเว้นอักษรตัวแรก เราจะคืนค่าเท็จในกรณีนี้

แนวทางที่ใช้ในการแก้ปัญหานี้

ในสตริงที่กำหนด เราต้องตรวจสอบว่าอักขระทั้งหมดของสตริงอินพุตเป็นตัวพิมพ์ใหญ่หรือไม่ ดังนั้น เราจะวนซ้ำอักขระแต่ละตัวของสตริงและจะตรวจสอบว่ามีค่ามากกว่า 'A' และน้อยกว่า 'Z' หรือไม่

หากเงื่อนไขเป็นจริงเราจะเพิ่มตัวนับ จากนั้นเราจะดำเนินการต่อไปและตรวจสอบอีกครั้งว่าขนาดของตัวนับเท่ากับความยาวของสตริงหรือไม่ จากนั้นคืนค่าจริงหรือเท็จ

  • รับอินพุตของสตริง 'str'

  • ฟังก์ชันบูลีน checkCapital(สตริง s) รับสตริงเป็นอินพุตและคืนค่า จริง หากอักขระทั้งหมดของสตริงเป็นตัวพิมพ์ใหญ่

  • หาตัวแปรตัวนับและเริ่มต้นเป็นศูนย์

  • วนซ้ำสตริงและตรวจสอบว่าอักขระปัจจุบันอยู่ภายใต้ช่วงของ 'A' ถึง 'Z' หากเงื่อนไขเป็นจริง จากนั้นให้เพิ่มตัวแปรตัวนับ

  • ตอนนี้ตัวนับตรวจสอบจะเท่ากับขนาดของสตริงและส่งกลับค่า True/False ตามลำดับ

  • หากตัวนับเป็น 0 หรือสตริงมีอักขระหนึ่งตัวซึ่งเป็นตัวพิมพ์ใหญ่ ให้คืนค่า จริง

ตัวอย่าง

#include<bits/stdc++.h>
using namespace std;
bool checkCapital(string s){
   int counter=0;
   int loc=i;
   for(int i=0;i<s.size();i++){
      if(s[i]>='A' && s[i]<= 'Z'){
         counter++;
         loc=i;
      }
   }
   if(counter==s.size() || counter==0 ||(counter==1 && loc==0))
      return true;
   return false;
}
int main(){
   string str= "INDIA";
   bool ans= checkCapital(str);
   if(ans){
      cout<<"True"<<endl;
   } else {
      cout<<"False"<<endl;
   }
   return 0;
}

ผลลัพธ์

การเรียกใช้โค้ดด้านบนจะสร้างผลลัพธ์เป็น

True

เนื่องจากสตริงอินพุต "อินเดีย" มีตัวพิมพ์ใหญ่ทั้งหมด เราจึงได้ผลลัพธ์เป็น "จริง"