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

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


String คืออาร์เรย์ตัวอักษรหนึ่งมิติ จบด้วย null character (\0) ความถี่ (Frequency) คือจำนวนครั้งที่ตัวอักษรปรากฏในสตริง

ตัวอย่าง: String "Football is a sport" ตัวอักษร 'o' ปรากฏ 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 วนจนกว่าจะเจอ \0 ถ้า str[i] == c ให้ count++ แล้วแสดงผล

โปรแกรมหาความถี่ตัวอักษรทั้งหมด (a-z)

#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 วนจน \0 ถ้าเป็นตัวพิมพ์เล็ก a-z คำนวณ index j = str[i] - 'a' เพิ่ม alphabet[j]++ แล้วแสดงทั้ง 26 ตัวอักษร