เราได้รับประโยคหรือสตริงที่มีคำที่สามารถมีช่องว่าง อักขระขึ้นบรรทัดใหม่ และอักขระแท็บในระหว่างนั้น งานคือการคำนวณจำนวนคำทั้งหมดในสตริงและพิมพ์ผลลัพธ์
ป้อนข้อมูล − string str =“ยินดีต้อนรับสู่\nจุดสอน\t”
ผลผลิต − จำนวนคำในสตริงคือ − 4
คำอธิบาย − มีสี่คำในสตริง เช่น welcome, to, tutorials, point และส่วนที่เหลือเป็นช่องว่าง(“ ”) อักขระบรรทัดถัดไป(\n) และอักขระแท็บ(\t) อยู่ระหว่างคำ
ป้อนข้อมูล − string str =“\nความซื่อสัตย์\t คือนโยบายที่ดีที่สุด”
ผลผลิต − จำนวนคำในสตริงคือ − 5
คำอธิบาย − มีคำสี่คำในสตริง เช่น ความซื่อสัตย์ คือ ดีที่สุด นโยบาย และส่วนที่เหลือคือช่องว่าง(“ ”) อักขระบรรทัดถัดไป (\n) และอักขระแท็บ (\t) อยู่ระหว่างคำ
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
อาจมีวิธีแก้ปัญหาหลายประการสำหรับสิ่งนี้ มาดูแนวทางที่ง่ายกว่าที่เราเคยใช้ในโค้ดด้านล่างนี้กันก่อน -
-
สร้างอาร์เรย์ประเภทถ่านสำหรับจัดเก็บสตริง สมมติว่า str[]
-
ประกาศตัวแปรชั่วคราวสองตัว ตัวหนึ่งถูกนับเพื่อนับจำนวนคำในสตริง และ temp เพื่อดำเนินการแฟล็ก
-
เริ่มวนซ้ำในขณะที่ str ไม่เป็นโมฆะ
-
ภายในลูป ให้ตรวจสอบ IF *str =space OR *str =next line OR *str =tab จากนั้นตั้งค่า temp เป็น 0
-
อื่น ถ้า temp =0 ให้ตั้งค่า temp เป็น 1 และเพิ่มค่าของการนับขึ้น 1
-
เพิ่มตัวชี้ str 1
-
คืนค่าเป็นจำนวน
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include
using namespace std;
//count words in a given string
int total_words(char *str){
int count = 0;
int temp = 0;
while (*str){
if (*str == ' ' || *str == '\n' || *str == '\t'){
temp = 0;
}
else if(temp == 0){
temp = 1;
count++;
}
++str;
}
return count;
}
int main(){
char str[] = "welcome to\n tutorials point\t";
cout<<"Count of words in a string are: "<<total_words(str);
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of words in a string are: 4