私はC#を使って周波数解析コンソールプログラムを作る必要があります。それは、テキストファイルから10の最も頻繁な文字を表示する必要があります。私はプログラムによって読み込まれた最初の10文字と各文字の頻度を表示することができました。しかし、私は辞書のソート方法を知らない。これはこれまでのコードです。C#.netで辞書をソートする方法
大文字と小文字の区別がついたモード(現時点で)と大文字と小文字を区別しないで、頻度分析のオプションもユーザーに与えなければなりません。この問題の助けにも感謝します。ありがとうございました!
static void Main(string[] args)
{
// 1.
// Array to store frequencies.
int[] c = new int[(int)char.MaxValue];
// 2.
// Read entire text file.
// string root = Server.MapPath("~");
// string FileName = root + "/App_Data/text.txt";
//string s = File.ReadAllText(FileName);
foreach (string line in File.ReadLines(@"c:\Users\user\Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\App_Data\text.txt", Encoding.UTF8)) {
var fileStream = new FileStream(@"c:\Users\user\Documents\Visual Studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\App_Data\text.txt", FileMode.Open, FileAccess.Read);
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
{
string line2;
while ((line2 = streamReader.ReadLine()) != null)
{
// process the line
// 3.
// Iterate over each character.
foreach (char t in line)
{
// Increment table.
c[(int)t]++;
}
// 4.
// Write all letters found.
int counter = 0;
for (int i = 0; i < (int)char.MaxValue; i++)
{
if (c[i] > 0 && counter < 11 &&
char.IsLetterOrDigit((char)i))
{
++counter;
Console.WriteLine("Letter: {0} Frequency: {1}",
(char)i,
c[i]);
}
}
}
}
Console.ReadLine();
}
}
https://www.dotnetperls.com/sort-dictionaryこのリンクをクリックしてください。 – Sameer
'Dictionary'はソートできません。順序の概念はありません。あなたができることは辞書をList/Enumerableに変換し、@ aquinasのようにソートします。 –