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

โปรแกรม C หาค่าที่สองมากที่สุดและสองน้อยที่สุดในอาร์เรย์


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

รับอาร์เรย์ แล้วเรียงลำดับ Descending (มากไปน้อย) ด้วย Swapping แล้วหาค่าที่ 2 มากที่สุด (index 1) และค่าที่ 2 น้อยที่สุด (index n-2)

อัลกอริทึม

  1. รับค่า n และอาร์เรย์
  2. เรียง Descending ด้วย Bubble Sort
  3. 2nd Largest = number[1]
  4. 2nd Smallest = number[n-2]
  5. คำนวณค่าเฉลี่ยของทั้งสอง ตรวจสอบว่าอยู่ในอาร์เรย์หรือไม่

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

#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