「配列 y を変更してはいけない」ものを作ってみました。
参考までに。
#4さん>結論としては「ソートについて調べましょう」ですね。
「配列 y を変更してはいけない」の場合は、「ソートについて調べ」ただけでは、ダメかもしれません。
3重の for 構文になりそう・・。
「ソート」と同じ、2重でできそうなもんですが、年寄りの夜更かしには思いつかない・・残念。
#include <stdio.h>
#define CNT 10
int main( void )
{
double y[ CNT ] = { 0.9, 1.8,-2.7, 3.6, 4.5, 5.4, 6.3,-7.2, 8.1, 9.0 };
double z[ CNT ], dMax;
int iSumi[ CNT ] = { 0 };
int i, j, nn, kk;
for( nn = 0; nn < CNT; nn++ ){
for( j = 0; j < CNT; j++ ){
if( iSumi[ j ] ) continue;
dMax = y[ j ]; // 仮の最大値
kk = j;
for( i = 0; i < CNT; i++ ){
if( iSumi[ i ] ) continue;
if( dMax < y[ i ] ){
dMax = y[ i ];
kk = i;
}
}
}
z[ nn ] = y[ kk ];
iSumi[ kk ] = 1;
}
for( i = 0; i < CNT; i++ ) printf( " %5.1f", y[ i ] );
printf( "\n" );
for( i = 0; i < CNT; i++ ) printf( " %5.1f", z[ i ] );
printf( "\n" );
return( 0 );
}
注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。