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

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


คำอธิบายปัญหา

สมมติว่าเรามีสตริง s ที่ประกอบด้วยตัวอักษรและตัวเลข เราต้องหาความถี่ (Frequency) ของแต่ละตัวเลข (0-9) ที่ปรากฏในสตริงและแสดงผล

ตัวอย่าง

หากอินพุตเป็น s = "we85abc586wow236h69" ผลลัพธ์จะเป็น:
(Number 2, Freq 1) (Number 3, Freq 1) (Number 5, Freq 2) (Number 6, Freq 3) (Number 8, Freq 2) (Number 9, Freq 1)

ขั้นตอนการแก้ปัญหา

  1. สร้างอาร์เรย์ freq ขนาด 10 สำหรับตัวเลข 0-9 เริ่มต้นค่าเป็น 0
  2. วนลูปตรวจสอบทุกตัวอักษรในสตริง
  3. ถ้าตัวอักษรเป็นตัวเลข (ระหว่าง '0' ถึง '9') ให้เพิ่มค่า freq[s[i] - '0'] ขึ้น 1
  4. วนลูปแสดงผลเฉพาะตัวเลขที่มีความถี่มากกว่า 0

โค้ดตัวอย่าง

#include <stdio.h>
#include <string.h>

void solve(char *s) {
    int freq[10] = {0};
    for (int i = 0; i < strlen(s); i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            freq[s[i] - '0']++;
        }
    }
    for (int i = 0; i < 10; i++) {
        if (freq[i] > 0)
            printf("(Number %d, Freq %d)\n", i, freq[i]);
    }
}

int main() {
    char *s = "we85abc586wow236h69";
    solve(s);
    return 0;
}

อินพุต

"we85abc586wow236h69"

เอาต์พุต

(Number 2, Freq 1)
(Number 3, Freq 1)
(Number 5, Freq 2)
(Number 6, Freq 3)
(Number 8, Freq 2)
(Number 9, Freq 1)