เราได้รับประโยคหรือสตริงที่มีคำที่สามารถมีช่องว่าง อักขระขึ้นบรรทัดใหม่ และอักขระแท็บในระหว่างนั้น งานคือการคำนวณจำนวนคำทั้งหมดในสตริงและพิมพ์ผลลัพธ์
ป้อนข้อมูล − 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