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

โปรแกรม C เพื่อค้นหาค่ามัธยฐานของรายการที่กำหนด


หากองค์ประกอบของรายการถูกจัดเรียงตามลำดับ ค่ากลางที่แบ่งรายการออกเป็นสองส่วนโดยมีจำนวนรายการเท่ากันทั้งสองด้านจะเรียกว่าค่ามัธยฐาน

จำนวนรายการคี่มีค่ากลางเพียงค่าเดียวในขณะที่; จำนวนคู่มีค่ากลางสองค่า

ค่ามัธยฐานสำหรับจำนวนคู่จึงถูกกำหนดเป็นค่าเฉลี่ยของค่ากลางทั้งสองค่า

อัลกอริทึม

อ้างถึงอัลกอริทึมที่ระบุด้านล่างเพื่อคำนวณค่ามัธยฐาน

ขั้นตอนที่ 1 - อ่านรายการในอาร์เรย์ในขณะที่นับรายการ

ขั้นตอนที่ 2 - จัดเรียงรายการตามลำดับที่เพิ่มขึ้น

ขั้นตอนที่ 3 - คำนวณค่ามัธยฐาน

ตรรกะที่ใช้ในการเรียงลำดับตัวเลขก่อนหาค่ามัธยฐานมีดังนี้ −

for (i = 1 ; i <= n-1 ; i++){
   for (j = 1 ; j <= n-i ; j++){
      if (a[j] <= a[j+1]){
         t = a[j];
         a[j] = a[j+1];
         a[j+1] = t;
      } else
      continue ;
   }
}

ตรรกะที่ใช้ในการหาค่ามัธยฐานของรายการมีดังนี้ -

if ( n % 2 == 0)
   median = (a[n/2] + a[n/2+1])/2.0 ;
else
   median = a[n/2 + 1];

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C เพื่อคำนวณค่ามัธยฐานของตัวเลขที่กำหนด -

#include<stdio.h>
#define N 10
main( ){
   int i,j,n;
   float median,a[N],t;
   printf("Enter the number of items\n");
   scanf("%d", &n);
   /* Reading items into array a */
   printf("Input %d values \n",n);
   for (i = 1; i <= n ; i++)
   scanf("%f", &a[i]);
   /* Sorting begins */
   for (i = 1 ; i <= n-1 ; i++){ /* Trip-i begins */
      for (j = 1 ; j <= n-i ; j++) {
         if (a[j] <= a[j+1]) { /* Interchanging values */
            t = a[j];
            a[j] = a[j+1];
            a[j+1] = t;
         }
         else
         continue ;
      }
   } /* sorting ends */
   /* calculation of median */
   if ( n % 2 == 0)
      median = (a[n/2] + a[n/2+1])/2.0 ;
   else
   median = a[n/2 + 1];
   /* Printing */
   for (i = 1 ; i <= n ; i++)
   printf("%f ", a[i]);
   printf("\n\nMedian is %f\n", median);
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะสร้างผลลัพธ์ต่อไปนี้ -

Enter the number of items
5
Input 5 values
2.3
1.2
3.8
4.6
8.9
8.900000 4.600000 3.800000 2.300000 1.200000

Median is 3.800000