คำอธิบายปัญหา
รับอาร์เรย์ แล้วเรียงลำดับ Descending (มากไปน้อย) ด้วย Swapping แล้วหาค่าที่ 2 มากที่สุด (index 1) และค่าที่ 2 น้อยที่สุด (index n-2)
อัลกอริทึม
- รับค่า n และอาร์เรย์
- เรียง Descending ด้วย Bubble Sort
- 2nd Largest = number[1]
- 2nd Smallest = number[n-2]
- คำนวณค่าเฉลี่ยของทั้งสอง ตรวจสอบว่าอยู่ในอาร์เรย์หรือไม่
โค้ดตัวอย่าง
#include <stdio.h>
void main() {
int i, j, a, n, number[30];
printf("Enter N: "); scanf("%d", &n);
printf("Enter numbers:\n");
for (i = 0; i < n; i++) scanf("%d", &number[i]);
// Descending sort
for (i = 0; i < n; i++)
for (j = i+1; j < n; j++)
if (number[i] < number[j]) {
a = number[i]; number[i] = number[j]; number[j] = a;
}
printf("Descending: ");
for (i = 0; i < n; i++) printf("%d ", number[i]);
printf("\n2nd Largest = %d", number[1]);
printf("\n2nd Smallest = %d", number[n-2]);
int ave = (number[1] + number[n-2]) / 2;
int counter = 0;
for (i = 0; i < n; i++) if (ave == number[i]) counter++;
if (counter == 0) printf("\nAverage not in array");
else printf("\nAverage found %d times", counter);
}
ผลลัพธ์
N = 5 Numbers: 10 12 17 45 80 Descending: 80 45 17 12 10 2nd Largest = 45 2nd Smallest = 12 Average not in array