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

นับพยัญชนะในสตริง (วิธีการวนซ้ำและแบบเรียกซ้ำ) ใน C ++


เราได้รับสตริงที่มี str ของความยาวเท่าใดก็ได้ และภารกิจคือการคำนวณจำนวนพยัญชนะในสตริงที่กำหนดโดยใช้ทั้งวิธีการวนซ้ำและแบบเรียกซ้ำ

พยัญชนะคือตัวอักษรที่ไม่ใช่สระเช่นตัวอักษรยกเว้น a, i, e, o, u ถือเป็นพยัญชนะ ดังนั้นในโปรแกรมด้านล่าง เราจำเป็นต้องหาจำนวนตัวอักษรอื่นที่ไม่ใช่สตริง

การเรียกซ้ำและการวนซ้ำทั้งสองดำเนินการชุดคำสั่งซ้ำๆ การเรียกซ้ำคือเมื่อคำสั่งในฟังก์ชันเรียกตัวเองซ้ำๆ การวนซ้ำคือเมื่อลูปทำงานซ้ำๆ จนกระทั่งเงื่อนไขการควบคุมกลายเป็นเท็จ ความแตกต่างหลักระหว่างการเรียกซ้ำและการวนซ้ำคือการเรียกซ้ำเป็นกระบวนการ นำไปใช้กับฟังก์ชันเสมอ และการวนซ้ำจะถูกนำไปใช้กับชุดคำสั่งที่เราต้องการให้ดำเนินการซ้ำๆ

ตัวอย่าง

Input − string str = “tutorials point”
Output − count is 8

คำอธิบาย − ในสตริงที่กำหนด str มีพยัญชนะทั้งหมด 8 ตัว ได้แก่ t, t, r, l, s, p, n และ t

Input − string str = “a e io u”
Output − count is 0

คำอธิบาย − ในสตริงที่ให้มา str ไม่มีพยัญชนะ แต่มีเพียงสระ นับจึงเป็น 0

การวนซ้ำ

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ป้อนสตริงในตัวแปร สมมติว่า str

  • คำนวณความยาวของสตริงที่กำหนดโดยใช้ฟังก์ชัน length() ซึ่งจะคืนค่าจำนวนเต็มตามจำนวนอักขระในสตริง

  • ใช้ตัวแปรชั่วคราวที่จะเก็บจำนวนองค์ประกอบ

  • เริ่มวนรอบสำหรับ i ถึง 0 จนถึง i น้อยกว่าความยาวของสตริง

  • ภายในลูป ให้ตรวจสอบว่า str[i] เป็นพยัญชนะแล้วเพิ่มค่านับขึ้น 1

  • คืนจำนวน

  • พิมพ์ผลลัพธ์

ตัวอย่าง

// Iterative CPP program
#include <iostream>
using namespace std;
// Function to check for consonant
bool consonant(char ch){
   // To handle lower case
   ch = toupper(ch);
   return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
//function to count consonant
int countconsonants(string s){
   int result = 0;
   for (int i = 0; i < s.length(); i++){
      // To check is character is Consonant
      if (consonant(s[i])){
         ++result;
      }
   }
   return result;
}
// main function
int main(){
   string s = "wx abc def";
   cout <<"count is: "<<countconsonants(s);
   return 0;
}

ผลลัพธ์

หากเรารันโค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้

count is: 6

แบบเรียกซ้ำ

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ป้อนสตริงในตัวแปร สมมติว่า str

  • คำนวณความยาวของสตริงที่กำหนดโดยใช้ฟังก์ชัน length() ซึ่งจะคืนค่าจำนวนเต็มตามจำนวนอักขระในสตริง

  • ใช้ตัวแปรชั่วคราวที่จะเก็บจำนวนองค์ประกอบ

  • สร้างฟังก์ชันเรียกซ้ำที่จะเรียกตัวเองในการคำนวณพยัญชนะในสตริง

  • ตรวจสอบว่าขนาด IF เป็น 1 แล้วส่งคืน str[0].

  • จากนั้นให้คืนค่า recursive_call_to_function เป็น (str, size-1) + ตรวจสอบว่าอักขระเป็นสตริงหรือไม่ (str[size-1])

ตัวอย่าง

// Recursive CPP program
#include <iostream>
using namespace std;
// Function to check for consonant
bool consonant(char ch){
   // To convert the lower case
   ch = toupper(ch);
   return !(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') && ch >= 65 && ch <= 90;
}
// to count total number of consonants
int consonantcount(string str, int n){
   if (n == 1){
      return consonant(str[0]);
   }
   return consonantcount(str, n - 1) +
   consonant(str[n-1]);
}
int main(){
   string str = "wx abc def";
   cout <<"count is: "<<consonantcount(str, str.length());
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -

count is: 6