関数 sort は,三つの double 型変数の内容を大きい順(降順)に並べ替える働きをする.
これを実現する方法はシンプルであり,以下の 3 個の if 文と swap の呼出しを行うだけで完了する.
ただし,
以下のやり方はあくまでも main 関数で書いた場合の方法になっているので少し工夫が必要である:
if ( x < y ){
swap(&x, &y); ← x < y ならば x と y を入れ替え
}
if ( x < z ){
swap(&x, &z); ← x < z ならば x と z を入れ替え
}
if ( y < z ){
swap(&y, &z); ← y < z ならば y と z を入れ替え
}
まず,x と y の値の入れ替えは,main 関数の中であれば上のように
swap(&x, &y);
で実行できるが,
関数 sort の中ではこのままでは動かない.
なぜならば,
x や y は main 関数の中でのみ有効な名前だからである.
関数 sort の中では,ポインタを使った
(*px) が
x の別名となっている.
つまり,
&x と書きたいところは
&(*px) と書けばよいことになるが,
もともと
&x
で
x の番地
を指定したかったわけなので,
&(*px) と書く必要はなく,
px だけでここは十分である.
つまり,
swap(&x, &y); は関数 sort の中では
swap(px, py);
でよいことになる.
以上の説明を参考にして sort を完成させなさい.