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

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

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

ตัวอย่างอินพุต 1

str = "INDIA"

เอาต์พุต

True

คำอธิบาย

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

ตัวอย่างอินพุต 2

str = "Programmer"

เอาต์พุต

False

คำอธิบาย

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

วิธีการแก้ปัญหา

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

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

  • รับอินพุตของสตริง 'str'
  • ฟังก์ชัน Boolean checkCapital(string s) รับสตริงเป็นอินพุตและคืนค่า true หากตัวอักษรทั้งหมดของสตริงเป็นตัวพิมพ์ใหญ่
  • ใช้ตัวแปรนับและเริ่มต้นเป็นศูนย์
  • วนลูปผ่านสตริงและตรวจสอบว่าตัวอักษรปัจจุบันอยู่ในช่วง 'A' ถึง 'Z' ถ้าเงื่อนไขเป็นจริงให้เพิ่มตัวแปรนับ
  • ตอนนี้ตรวจสอบตัวนับว่าเท่ากับขนาดของสตริงหรือไม่และคืนค่า True/False ตามลำดับ
  • ถ้าตัวนับเป็น 0 หรือสตริงมีตัวอักษรหนึ่งตัวซึ่งเป็นตัวพิมพ์ใหญ่ ให้คืนค่า true

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

bool checkCapital(string s) {
    int counter = 0;
    int loc = 0;
    
    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

เนื่องจากสตริงอินพุต 'INDIA' มีตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่ เราได้เอาต์พุตเป็น "True"