Ryota Nakamura
/
Function_Median
配列になったfloat型のデータに対して,中央値(メジアン)を戻り値として返す関数を作成.ただし,引数は配列ポインタ(float型)と配列個数(int型)の2種類を用いる.
main.cpp@0:ac4681bf247f, 2017-02-26 (annotated)
- Committer:
- RyotaNakamura
- Date:
- Sun Feb 26 04:09:47 2017 +0000
- Revision:
- 0:ac4681bf247f
??????float????????????????????????????????????????????????float????????int?)?2???????; ;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RyotaNakamura | 0:ac4681bf247f | 1 | /*配列になったfloat型のデータに対して,中央値(メジアン)を戻り値として返す関数を作成せよ.*/ |
RyotaNakamura | 0:ac4681bf247f | 2 | /*ただし,引数は配列ポインタ(float型)と配列個数(int型)の2種類を用いよ.*/ |
RyotaNakamura | 0:ac4681bf247f | 3 | |
RyotaNakamura | 0:ac4681bf247f | 4 | #include "mbed.h" |
RyotaNakamura | 0:ac4681bf247f | 5 | |
RyotaNakamura | 0:ac4681bf247f | 6 | Serial pc(USBTX, USBRX); |
RyotaNakamura | 0:ac4681bf247f | 7 | |
RyotaNakamura | 0:ac4681bf247f | 8 | void Median(float *date,int n); |
RyotaNakamura | 0:ac4681bf247f | 9 | |
RyotaNakamura | 0:ac4681bf247f | 10 | int n; //配列要素数 |
RyotaNakamura | 0:ac4681bf247f | 11 | float *array; //float型のポインタ |
RyotaNakamura | 0:ac4681bf247f | 12 | |
RyotaNakamura | 0:ac4681bf247f | 13 | int main(int argc, char* argv[]){ |
RyotaNakamura | 0:ac4681bf247f | 14 | pc.printf("The element of array : n = "); |
RyotaNakamura | 0:ac4681bf247f | 15 | pc.scanf("%d\n",&n); //配列要素数を入力 |
RyotaNakamura | 0:ac4681bf247f | 16 | |
RyotaNakamura | 0:ac4681bf247f | 17 | array=new float[n]; //実数n個分の配列を確保 |
RyotaNakamura | 0:ac4681bf247f | 18 | |
RyotaNakamura | 0:ac4681bf247f | 19 | for(int i=0;i<n;i++){ |
RyotaNakamura | 0:ac4681bf247f | 20 | pc.scanf("%f\n",&array[i]); //配列要素を入力 |
RyotaNakamura | 0:ac4681bf247f | 21 | } |
RyotaNakamura | 0:ac4681bf247f | 22 | |
RyotaNakamura | 0:ac4681bf247f | 23 | pc.printf("_______________\n"); |
RyotaNakamura | 0:ac4681bf247f | 24 | Median(array,n); //関数へ飛ぶ |
RyotaNakamura | 0:ac4681bf247f | 25 | |
RyotaNakamura | 0:ac4681bf247f | 26 | delete[] array; //配列を削除 |
RyotaNakamura | 0:ac4681bf247f | 27 | |
RyotaNakamura | 0:ac4681bf247f | 28 | return 0; |
RyotaNakamura | 0:ac4681bf247f | 29 | } |
RyotaNakamura | 0:ac4681bf247f | 30 | |
RyotaNakamura | 0:ac4681bf247f | 31 | void Median(float *date,int n){ |
RyotaNakamura | 0:ac4681bf247f | 32 | float median; |
RyotaNakamura | 0:ac4681bf247f | 33 | for(int i=0;i<n;i++){ //昇順に並び替え |
RyotaNakamura | 0:ac4681bf247f | 34 | for(int j=i+1;j<n;j++){ |
RyotaNakamura | 0:ac4681bf247f | 35 | if(array[i]>array[j]){ |
RyotaNakamura | 0:ac4681bf247f | 36 | float *x; |
RyotaNakamura | 0:ac4681bf247f | 37 | float *y; |
RyotaNakamura | 0:ac4681bf247f | 38 | x=&array[i]; |
RyotaNakamura | 0:ac4681bf247f | 39 | y=&array[j]; |
RyotaNakamura | 0:ac4681bf247f | 40 | float tmp; |
RyotaNakamura | 0:ac4681bf247f | 41 | tmp=*x; |
RyotaNakamura | 0:ac4681bf247f | 42 | *x=*y; |
RyotaNakamura | 0:ac4681bf247f | 43 | *y=tmp; |
RyotaNakamura | 0:ac4681bf247f | 44 | } |
RyotaNakamura | 0:ac4681bf247f | 45 | } |
RyotaNakamura | 0:ac4681bf247f | 46 | } |
RyotaNakamura | 0:ac4681bf247f | 47 | |
RyotaNakamura | 0:ac4681bf247f | 48 | for(int i=0;i<n;i++) //並び替えた結果の出力 |
RyotaNakamura | 0:ac4681bf247f | 49 | pc.printf("%f\n",array[i]); |
RyotaNakamura | 0:ac4681bf247f | 50 | |
RyotaNakamura | 0:ac4681bf247f | 51 | if(n % 2==0){ //配列要素数が偶数のとき |
RyotaNakamura | 0:ac4681bf247f | 52 | median=(array[n/2]+array[n/2-1])/2; |
RyotaNakamura | 0:ac4681bf247f | 53 | pc.printf("Median= %f\n",median); |
RyotaNakamura | 0:ac4681bf247f | 54 | }else{ //配列要素数が奇数のとき |
RyotaNakamura | 0:ac4681bf247f | 55 | median=array[(n-1)/2]; |
RyotaNakamura | 0:ac4681bf247f | 56 | pc.printf("Median= %f\n",median); |
RyotaNakamura | 0:ac4681bf247f | 57 | } |
RyotaNakamura | 0:ac4681bf247f | 58 | } |