ショッピングモール  レギュラー(エスプレッソ用)  レギュラー(フレーバーコーヒー)


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5243

Re:中央値について
投稿者---iijima(2006/01/07 10:45:27)


# なんで返信のついた投稿を削除するかなぁ。しかも何度も...
# 管理者、他の投稿者、閲覧者がこのスレッドのために費やした時間などの資源を
# ゴミのように捨て去る身勝手で非礼な行為だということが理解できないのだろうか。
# で、多少なりとも費やした時間を無駄にしたくないので、問題を再現し、回答例を書きます。
# "廃品回収"です^^

[問題]
n個の整数値を入力し、それらの最小値、最大値、中央値を求めるプログラムを書け。
nは100以下とし、ユーザーが入力するものとする。

[回答例]
注:この回答例は、データ数に0以下または101以上の数が入力されたり、
データ数やデータに整数以外が入力されたりしたときの動作が未定義なので
100点満点じゃありません。
ヒマな..じゃなくて勉強熱心な方はこれを解消する方法を考えてください。

#include <stdio.h>
#define MAX_SIZE  100

int main( void )
{
    int n;                // データ数
    int data[ MAX_SIZE ]; // データ配列
    double median;        // 中央値
    int i, j;

    // データ数入力
    printf( "データ数入力[%d以下] > ", MAX_SIZE );
    scanf( "%d", &n );

    // データ入力
    for( i = 0; i < n; i++ ){
        printf( "%3d番目のデータ > ", i + 1 );
        scanf( "%d", &data[ i ] );
    }

    // データ配列を昇順に整列(バブルソート)
    for( i = 0; i < n - 1; i++ ){
        for( j = n - 1; j > i; j-- ){
            if( data[ j ] < data[ j - 1 ] ){
                int tmp = data[ j ];
                data[ j ] = data[ j - 1 ];
                data[ j - 1 ] = tmp;
            }
        }
    }

    // 中央値計算
    if( n % 2 == 1 ){
        median = data[ n / 2 ];
    }
    else{
        median = ( data[ n / 2 - 1 ] + data[ n / 2 ] ) / 2.0;
    }

    // 結果出力
    printf( "最小値:%d\n", data[ 0 ] );
    printf( "最大値:%d\n", data[ n - 1 ] );
    printf( "中央値:%.1f\n", median );

    return 0;
}
// converted by RAPT's CSrcConv



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<親記事> Re:中央値について 5228 まきじ 2006/01/05 02:14:24


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity