質問: true; break; } if (pEnd) { break; } } } } ``` 配列name[]の中から最高得点者(複数の場合もあり)を取得し表示させる方法がわからず、苦戦しております。 for文で受験者数分まわして、if文で配列score[]の要素がhighscoreと一致、かつ その要素の添え字とname[]の添え字が一致とすれば、 最高得点者の氏名が取得できるのでは? と思いましたが、うまくコードが書けません。 なにかよい方法はないでしょうか? 知恵をお借りしたいです。 よろしくお願いします。
回答: こんにちは。 直接の回答はしませんが、ヒントとして、 「name と score をペアとして扱いたいなら、先に `Name` と `Score` を持つ新しい class を作ってしまう」 というものがあります。 こんな感じのイメージです。 ``` // Name と Score を持つクラス class Person { public string Name { get; set; } public int Score { get; set; } } static void Main(string[] args) { Console.WriteLine("受験者数は?"); int ninzu = int.Parse(Console.ReadLine()); // 人数分の名前と点数を格納する配列を宣言 // string[] name = new string[ninzu]; // int[] score = new int[ninzu]; // Person の配列一つだけにしてしまう var persons = new Person[ninzu]; int sum = 0; for (int i = 0; i < ninzu; ++i) { var person = new Person(); // ここで新しい Person を作る Console.WriteLine("氏名は?"); person.Name = Console.ReadLine(); // person の中に書き込む Console.WriteLine("点数は?"); person.Score = int.Parse(Console.ReadLine()); sum = sum + person.Score; persons[i] = person; // ここで persons に person を追加 } // ... ``` こうすることで、`Score` が分かる場面では `Name` も分かり、`Name` が分かるなら `Score` も簡単に取れます。