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

พิมพ์ตัวเลขเรียงจากมากไปน้อย พร้อมความถี่

ได้รับอาร์เรย์จำนวนเต็ม ต้องจัดเรียงตัวเลขจากมากไปน้อย และหาจำนวนครั้งที่เกิดขึ้น

Input: arr[] = {1,1,1,2,2,2,3,3,4,5,6,7,7}
Output:
7 occurs: 2
6 occurs: 1
5 occurs: 1
4 occurs: 1
3 occurs: 2
2 occurs: 3
1 occurs: 3

อัลกอริทึม

START
Step 1 -> input array with elements in sorting order
Step 2 -> calculate size of an array by sizeof(a)/sizeof(a[0])
Step 3 -> store size in a variable say en
Step 4 -> Loop For i=siz-1 and i>0 and i--
    IF a[i] != a[i-1]
        Set to = en-1
        Print a[i] and to
        Set en = i
    End
Step 5 -> print a[0] and to
STOP

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

#include <stdio.h>

int main() {
    int a[] = {1,1,1,2,2,2,3,3,4,5,6,7,7};
    int siz, i, en, st, to;
    siz = sizeof(a)/sizeof(a[0]);
    en = siz;
    for (i = siz-1; i > 0; i--) {
        if (a[i] != a[i-1]) {
            to = en - i;
            printf("%d occurs: %d\n", a[i], to);
            en = i;
        }
    }
    to = en;
    printf("%d occurs: %d\n", a[0], to);
}

ผลลัพธ์

7 occurs: 2
6 occurs: 1
5 occurs: 1
4 occurs: 1
3 occurs: 2
2 occurs: 3
1 occurs: 3