単純に、配列を渡したらメジアンを返してくれるプログラム
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> float fmed(float a[], int isa); int main(void) { int i,n; printf("Enter n = "); scanf("%d",&n); /* 配列の数を入力 */ float value[n]; for(i=0;i<n;i++){ printf("float value = "); scanf("%f",&value[i]); /* 配列に値を代入 */ printf("i = %d float value = %f\n", i+1, value[i]); } float med; med = fmed(value, n); /* 配列とその数を関数fmedに渡して、メジアンをいただく */ printf("median = %f\n", med); return 0; } float fmed( float a[], int isa ) { long i, j; /* for do loop */ long ioe; /* mod(isa) */ long ihalf; /* isa/2 */ long imax; /* ihalf+1 or ihalf */ float *ai, *aj, work; float med; /* median */ if( isa > 1 ) { ioe = isa%2; ihalf = 0.5*isa; if( isa == 2 ) ihalf = 0; imax = ihalf + 1; for ( i=0; i<imax; i++ ) { for ( j=i+1; j<isa; j++ ) { ai = (a+i); aj = (a+j); if ( *ai > *aj ) { work = *ai; *ai = *aj; *aj = work; } }} if( isa == 2 ) { med = 0.5*(a[0] + a[1]); } else { if( ioe == 1 ) med = a[ihalf]; else med = 0.5*(a[ihalf-1] + a[ihalf]); } } else { if( isa == 1 ) med = a[0]; else med = 0.0; } return( med ); }
いきなりfitsファイルをイジろうとしたから難しかったんだよ。こうやって簡単な問題を設定してあげなきゃ。