重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

大学で配列についてプログラミングをしているのですが、
3つの数字を大きい順に並びかえ、さらに番号も一緒に並び替えるという問題が
分からなく、困っています。
以下の例のように作成をしたいです。
3 一番
6 二番
9 三番

9 三番
6 二番
3 一番

分かる方教えてくださると助かります><
任意の数字を入れるところまでは以下のようにできていますが、そのあとに一番目などと表示されるところが大きい順になったときでも反映できるようにしたいです・・・
int[] Val = new int[3];
Console.WriteLine("3つの数値を入力せよ");
for (int i = 0; i < 3; i++)
Val[i] = Int32.Parse(Console.ReadLine());

Console.WriteLine("大きい順に表示");

for (int i = 0; i < 2; i++)
for (int j = i + 1; j < 3; j++)
{
if (Val[i] < Val[j])
{
int tmp = Val[i];
Val[i] = Val[j];
Val[j] = tmp;
}
}
for (int i = 0; i < 3; i++)
Console.Write(Val[i]+" ");

これをもとにつけたしていただきたいです、、
printfなどは使わずにとのことでした。
分かる方よろしくお願い致します。

A 回答 (3件)

C#なら、dictionary配列に値を突っ込んで、Keyでソートするという一文で済ませるんじゃないかな。

こんな感じで。
http://coniglio.hateblo.jp/entry/2014/06/05/214330

「これをもとにつけたしていただきたいです」という事は、
敢えて用意された物に抗い、「昔の苦労を思い知れ!」みたいな課題があるんでしょうかね。

さて、こんな感じで改変しました。
少しでも変わったことをすればたちまちコケる、スペランカー先生並の激弱プログラムですよ。
あとは煮るなり焼くなり、好きにして下さい。

int[] Val = new int[3];
string[] moji = new string[3];

Console.WriteLine("[数値 + 半角スペース + 文字]の組を3回入力せよ");

for (int i = 0; i < 3; i++)
{
string[] work = new string[2];
work = Console.ReadLine().Split(' ');
Val[i] = Int32.Parse(work[0]);
moji[i] = work[1];
}
Console.WriteLine("大きい順に表示");

for (int i = 0; i < 2; i++)
for (int j = i + 1; j < 3; j++)
{
if (Val[i] < Val[j])
{
int tmp = Val[i];
Val[i] = Val[j];
Val[j] = tmp;

string tmpstr = moji[i];
moji[i] = moji[j];
moji[j] = tmpstr;
}
}
for (int i = 0; i < 3; i++)
Console.Write(Val[i] + " " + moji[i] + "\n");
    • good
    • 0
この回答へのお礼

ありがとうございました^^

お礼日時:2016/09/20 19:58

ここまで出来ていれば、Valを構造体配列にして


ちょいちょいですよ。

このヒントで判らないようなら
ヤバイです。先ずは自分で書いてみましょう。
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2016/09/20 19:59

「何番目」ってのもいっしょに入れ替えればいいじゃん.

    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2016/09/20 19:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!