Computer >> Máy Tính >  >> Lập trình >> lập trình C

C chương trình để tìm tần số của mỗi chữ số trong một chuỗi

Giả sử chúng ta có một chuỗi s. Chữ s chứa cả chữ cái và chữ số. Chúng ta sẽ phải tìm tần số của từng chữ số và hiển thị chúng. Để làm điều này, chúng ta có thể tạo một mảng có kích thước 10 cho mỗi chữ số (từ 0 đến 9), ban đầu tất cả các phần tử đều là 0 bên trong mảng, sau đó khi chúng ta gặp một chữ số chỉ cần tăng giá trị của chỉ số đó và cuối cùng in chúng ra.

Vì vậy, nếu đầu vào là s =​​"we85abc586wow236h69", thì đầu ra sẽ là (Số 2, Tần suất 1) (Số 3, Tần suất 1) (Số 5, Tần suất 2) (Số 6, Tần suất 3) (Số 8, Câu hỏi thường xuyên 2) (Câu hỏi 9, Câu hỏi thường xuyên 1)

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định tần suất mảng có kích thước:10 và khởi tạo tất cả các phần tử bằng 0

  • để khởi tạo i:=0, khi i

    • nếu s [i] là số thì:

      • tăng freq [s [i] - ASCII của '0'] lên 1

  • để khởi tạo i:=0, khi tôi <10, hãy cập nhật (tăng i lên 1), thực hiện:

    • nếu freq [i]> 0, thì:

      • display (Number i, Freq freq [i])

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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);
}

Đầu vào

"we85abc586wow236h69"

Đầu ra

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