🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

4回答

6631閲覧

C#でsortを使わずに入力した5つの値を昇順に並べ替える

nekooooo

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2019/11/13 05:03

C#でsortを使わずに並べ替えたいのですが2時間ほど悩んでも解りません。課題なのですが5つの値を入力して昇順になるように並べ替えるというような問題です。for文で5つの値を入力できる状態にはできているのですがどうしたらいいですか?

出力様式
値を入力 5
値を入力 13
値を入力 7
値を入力 14
値を入力 11
5
7
11
13
14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/13 05:45

「C#でsortを使わず」というのはどういう意味ですか? Array.Sort とか List.Sort とか Linq とかを使わず自力でソートするコードを書きたいということですか?
tor4kichi

2019/11/13 07:48

条件式(if文)と配列は習いましたか?
guest

回答4

0

「ソート アルゴリズム」で検索すればいろいろなソートの考え方がわかるかと思います。
それを元にプログラムしてみてください。

投稿2019/11/13 05:08

YAmaGNZ

総合スコア10469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

世界一計算量が少ないと言われ、世界中のプログラマーに衝撃を与えた画期的なアルゴリズムである Sleep Sort を実装してみました。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Threading.Tasks; 5 6namespace ConsoleApp1 7{ 8 class Program 9 { 10 static void Main() 11 { 12 Console.WriteLine("出力様式"); 13 Linq 14 .Generate(() => 15 { 16 Console.Write("値を入力 "); 17 return Console.ReadLine(); 18 }) 19 .Take(5) 20 .Select(a => int.TryParse(a, out int result) ? result : 0) 21 .ToArray() 22 .Select(a => Task.Delay(a * 100).ContinueWith(_ => Console.WriteLine(a))) 23 .ToArray() 24 .Execute(a => Task.WaitAll(a)); 25 } 26 } 27 28 static class Linq 29 { 30 static public IEnumerable<T> Generate<T>(Func<T> generater) 31 { 32 while (true) yield return generater(); 33 } 34 35 static public void Execute<T>(this T source, Action<T> action) 36 { 37 action(source); 38 } 39 } 40}

投稿2019/11/20 14:05

編集2019/11/20 14:18
Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

今の世の中、LinqのOrderByやSortなど確実なものもあるのにとは思いますが、課題とのことなので学校か新入社員研修なのかもと推測して考え方だけ。

1.入力を変数に設定する
「for文で5つの値を入力できる状態にはできている」とのことですが、そもそもそれを変数に設定出来ている状態ですか?
変数に設定というのは、プログラム上の変数に入力したものがちゃんと意図した変数(意図していなければいけません)に入っているかということです。

2.数値変換
次に入力値は数字のようですが、ネタバレすると入力値は文字列として扱われます。文字列と数字はソートの結果が変わってしまいます。
この入力値を数字に変換しなければ期待結果にならないこともあります。
この際、数値変換に失敗した場合を考慮するのか、しないのかは課題次第です。数値変換に失敗というのは「あいうえお」と入力されたら?ということを考えるのかということです。
絶対に数値のみしか入力されないという保証があるなら省略するのもありかと思います。

3.比較
ソートというからには当然ですが比較が必要になります。
これをどういう方向でやるのかは人によりますが、私であれば何らかの集合体にします。プログラムではリストや配列と言われるものです。

まず2時間考えても出来ないというところから、ここまですら出来ていないかと推測します。
ここまで出来た上でソートのアルゴリズムが分かりませんというレベルになってから再度質問して下さい。回答者は赤の他人ですので、赤の他人に質問出来る段階ではないということです。

投稿2019/11/20 12:53

編集2019/11/20 12:54
Plan-B.0306

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ソートせずに昇順に並び替える。

C#

1using System; 2using System.Collections.Generic; 3 4namespace Sample 5{ 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 List<int> lstInt = new List<int>(); 11 int iMaxValue = Int32.MinValue; 12 int iMinValue = Int32.MaxValue; 13 14 Console.WriteLine("出力様式"); 15 16 for (int i = 0; i < 5; i++) 17 { 18 Console.Write("値を入力 "); 19 20 lstInt.Add(int.Parse(Console.ReadLine())); 21 22 if (iMaxValue < lstInt[i]) 23 { 24 iMaxValue = lstInt[i]; 25 } 26 27 if (lstInt[i] < iMinValue) 28 { 29 iMinValue = lstInt[i]; 30 } 31 } 32 33 for (int i = iMinValue; i <= iMaxValue; i++) 34 { 35 lstInt.ForEach(e => { if (e == i) Console.WriteLine(e); }); 36 } 37 } 38 } 39}

C#

1using System; 2using System.IO; 3 4namespace Sample 5{ 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 Console.WriteLine("出力様式"); 11 12 for (int i = 0; i < 5; i++) 13 { 14 Console.Write("値を入力 "); 15 string fn = Console.ReadLine().PadLeft(10, '0') + ".txt"; 16 StreamWriter sw = new StreamWriter(fn); 17 sw.Close(); 18 } 19 20 foreach (string fn in Directory.GetFiles(Environment.CurrentDirectory, "*.txt")) 21 { 22 Console.WriteLine(int.Parse(Path.GetFileNameWithoutExtension(fn))); 23 File.Delete(fn); 24 } 25 } 26 } 27} 28

投稿2019/12/04 13:50

編集2019/12/04 14:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問