ใส่องค์ประกอบอาร์เรย์แล้ว จัดเรียงตัวเลขในลำดับจากมากไปน้อยโดยใช้เทคนิคการสลับ ต่อมา ด้วยความช่วยเหลือของตำแหน่งดัชนี ให้ลองพิมพ์องค์ประกอบที่ใหญ่เป็นอันดับสองและเล็กที่สุดเป็นอันดับสองในอาร์เรย์
อาร์เรย์ใช้เพื่อเก็บกลุ่มขององค์ประกอบทั่วไปภายใต้ชื่อเดียว
การทำงานของอาร์เรย์ในภาษาซีมีดังต่อไปนี้ -
- แทรก
- ลบ
- ค้นหา
อัลกอริทึม
ด้านล่างนี้เป็นอัลกอริทึมในการค้นหาตัวเลขที่ใหญ่เป็นอันดับสองและน้อยที่สุดเป็นอันดับสองในอาร์เรย์ -
ขั้นตอนที่ 1 − ประกาศและอ่านจำนวนองค์ประกอบ
ขั้นตอนที่ 2 − ประกาศและอ่านขนาดอาร์เรย์ที่รันไทม์
ขั้นตอนที่ 3 − ป้อนองค์ประกอบอาร์เรย์
ขั้นตอนที่ 4 − เรียงลำดับตัวเลขจากมากไปหาน้อย
ขั้นตอนที่ 5 − จากนั้น ให้ค้นหาตัวเลขที่ใหญ่เป็นอันดับสองและน้อยที่สุดเป็นอันดับสองโดยใช้ดัชนี
ขั้นตอนที่ 6 − พิมพ์ตัวเลขที่ใหญ่เป็นอันดับสองและรองลงมา
โปรแกรม
รับด้านล่างเป็นโปรแกรม C เพื่อ ค้นหาตัวเลขที่ใหญ่เป็นอันดับสองและรองลงมาเป็นอันดับสองในอาร์เรย์ −
#include<stdio.h>
void main(){
int i,j,a,n,counter,ave,number[30];
printf ("Enter the value of N\n");
scanf ("%d", &n);
printf ("Enter the numbers \n");
for (i=0; i<n; ++i)
scanf ("%d",&number[i]);
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 ("The numbers arranged in descending order are given below\n");
for (i=0; i<n; ++i)
printf ("%10d\n",number[i]);
printf ("The 2nd largest number is = %d\n", number[1]);
printf ("The 2nd smallest number is = %d\n", number[n-2]);
ave = (number[1] +number[n-2])/2;
counter = 0;
for (i=0; i<n; ++i){
if (ave==number[i])
++counter;
}
if (counter==0)
printf("The average of 2nd largest & 2nd smallest is not in the array\n");
else
printf("The average of 2nd largest & 2nd smallest in array is %d in numbers\n", counter);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter the value of N 5 Enter the numbers 10 12 17 45 80 The numbers arranged in descending order are given below 80 45 17 12 10 The 2nd largest number is = 45 The 2nd smallest number is = 12 The average of 2nd largest & 2nd smallest is not in the array