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

โปรแกรม C++ เพื่อค้นหาความถี่ของอักขระในสตริง


สตริงคืออาร์เรย์อักขระหนึ่งมิติที่สิ้นสุดโดยอักขระ null ความถี่ของอักขระในสตริงคือจำนวนครั้งที่เกิดขึ้นในสตริง ตัวอย่างเช่น −

String: Football is a sport
The frequency of alphabet o in the above string is 3

โปรแกรมหาความถี่ของตัวอักษรแต่ละตัวมีดังต่อไปนี้

ตัวอย่าง

#include <iostream>
using namespace std;
int main() {
   char str[100] = "this string contains many alphabets";
   char c = 'a';
   int count = 0;
   for(int i = 0; str[i] != '\0'; i++) {
      if(str[i] == c)
      count++;
   }
   cout<<"Frequency of alphabet "<<c<<" in the string is "<<count;
   return 0;
}

ผลลัพธ์

Frequency of alphabet a in the string is 4

ในโปรแกรมข้างต้น for loop จะใช้เพื่อค้นหาความถี่ของตัวอักษร a สำหรับสตริงที่กำหนด ในลูป for ถ้า str[i] เท่ากับตัวอักษร การนับจะเพิ่มขึ้น 1 ค่าของการนับนี้จะแสดงเป็นความถี่ของตัวอักษร ข้อมูลโค้ดสำหรับสิ่งนี้มีดังต่อไปนี้

for(int i = 0; str[i] != '\0'; i++) {
   if(str[i] == c)
   count++;
}
cout<<"Frequency of alphabet "<<c<<" in the string is "<<count;

โปรแกรมหาความถี่ของตัวอักษรทั้งหมดในสตริงมีดังนี้

ตัวอย่าง

#include <iostream>
using namespace std;
int main() {
   char str[100] = "this string contains many alphabets";
   int i = 0, alphabet[26] = {0}, j;
   while (str[i] != '\0') {
      if (str[i] >= 'a' && str[i] <= 'z') {
         j = str[i] - 'a';
         ++alphabet[j];
      }
      ++i;
   }
   cout<<"Frequency of all alphabets in the string is:"<<endl;
   for (i = 0; i < 26; i++)
   cout<< char(i + 'a')<<" : "<< alphabet[i]<< endl;
   return 0;
}

ผลลัพธ์

Frequency of all alphabets in the string is:
a : 4
b : 1
c : 1
d : 0
e : 1
f : 0
g : 1
h : 2
i : 3
j : 0
k : 0
l : 1
m : 1
n : 4
o : 1
p : 1
q : 0
r : 1
s : 4
t : 4
u : 0
v : 0
w : 0
x : 0
y : 1
z : 0

ในโปรแกรมด้านบน ใช้ while loop เพื่อค้นหาความถี่ของตัวอักษรทั้งหมดในสตริง ตัวอักษรอาร์เรย์[] เก็บความถี่ของตัวอักษรทั้งหมด ตัวแปร j เก็บค่าตัวเลขของตัวอักษร เช่น a คือ 0, b คือ 1 เป็นต้น จากนั้นดัชนี jth ของตัวอักษรอาร์เรย์จะเพิ่มขึ้น 1 ซึ่งแสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้ -

while (str[i] != '\0') {
   if (str[i] >= 'a' && str[i] <= 'z') {
      j = str[i] - 'a';
      ++alphabet[j];
   }
   ++i;
}

หลังจากประเมินทั้งสตริงแล้ว ความถี่ของตัวอักษรจะถูกพิมพ์ ดังแสดงไว้ดังนี้

cout<<"Frequency of all alphabets in the string is:"<<endl;
for (i = 0; i < 26; i++)
cout<< char(i + 'a')<<" : "<< alphabet[i]<< endl;