質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

2697閲覧

データ配列の読み込み、計算式

meroy25

総合スコア13

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2017/02/03 09:54

編集2017/02/03 10:01

###前提・実現したいこと
当方C#プログラミング初心者です。
以下のソースコードは30人分の国語と英語の試験結果をもとに、各教科の平均点・最低点・最高点を計算し、さらに2つの教科の点数の相関係数、ユークリッド距離を求めるプログラムのものです。
上述の値を求めるメソッドを考え、骨組みを作ることはできました。
###発生している問題・エラーメッセージ
試験結果のデータの配列を入力したのですが、各メソッドにそれを反映させる方法がわからず困っています。
それがわかれば計算式を書けるのですが…

そして、ExamResultTestクラスの相関係数、ユークリッド距離を出力する文に以下のようなエラーメッセージが出ました。(太字の箇所です)
これはどのようにしたら解決できるでしょうか?

エラーメッセージ ・実行不可能なメンバーExamResult.Corrをメソッドのように使用することはできません。 ・実行不可能なメンバーExamResult.Distをメソッドのように使用することはできません。

###該当のソースコード

C#

1 2 public class ExamResult 3 { 4 5 int[] point; 6 7 public ExamResult(int[] p) 8 { 9 point = new int[p.Length]; 10 11 for (int i = 0; i < p.Length; i++) 12 { 13 point[i] = p[i]; 14 } 15 } 16 17 public double Avg 18 { 19 get; 20 21 } 22 public int Min 23 { 24 get; 25 } 26 public int Max 27 { 28 get; 29 30 } 31 public double Stdv 32 { 33 get; 34 35 } 36 public double Corr 37 { 38 get; 39 } 40 41 public double Dist 42 { 43 get; 44 } 45 46 } 47 48 49 50 class ExamResultTest 51 { 52 public static void Main() 53 { 54 ExamResult English = new ExamResult(new int[] { 80, 35, 45, 36, 78, 89, 67, 58, 37, 58, 53, 59, 50, 47, 58, 37, 19, 97, 86, 90, 10, 79, 37, 87, 45, 67, 68, 69, 65, 100 }); 55 ExamResult Japanese = new ExamResult(new int[] { 32, 55, 38, 25, 78, 80, 70, 48, 50, 42, 78, 63, 51, 40, 41, 67, 35, 86, 89, 75, 53, 45, 60, 30, 67, 43, 86, 73, 65, 90 }); 56 Console.WriteLine("英語の平均点は{0},最低点は{1},最高点は{2}",English.Avg,English.Min,English.Max); 57 Console.WriteLine("英語の標準偏差は{0}", English.Stdv); 58 Console.WriteLine("国語の平均点は{0},最低点は{1},最高点は{2}",Japanese.Avg, Japanese.Min, Japanese.Max); 59 Console.WriteLine("国語の標準偏差は{0}", Japanese.Stdv); 60 Console.WriteLine("英語と国語の相関係数は{0}",English.**Corr**(Japanese)); 61 Console.WriteLine("英語と国語のユークリッド距離は{0}", English.**Dist**(Japanese)); 62 63 64 } 65 } 66 67 68###補足情報(言語/FW/ツール等のバージョンなど) 69Visual Studio2015です。

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

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

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

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

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

guest

回答2

0

単純にプロパティの使い方が間違っているのです
プロパティはメソッドの様には使えません

投稿2017/02/03 16:53

kiritsugu

総合スコア127

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

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

meroy25

2017/02/04 08:18

ご指摘の通り、プロパティとメソッドの形をよく理解していませんでした。 ありがとうございます!
guest

0

ベストアンサー

こんにちは。
CorrやDistが、AvgやMinと同じ「プロパティ」として定義されているのが問題です。

メソッドの定義は、

csharp

1<accessibility> <returntype> <name> ( <parameters> ) 2{ 3 <body> 4}

例えば、

csharp

1public double Corr(ExamResult aaaa) 2{ 3 // ... 4}

という形で宣言する必要があります。

さらにいえば、AvgやMaxも「計算」を強く示唆しているので、プロパティではなくメソッドとして定義することをオススメします。


構文など定まったルールに関する情報は、既に日本語で丁寧にまとまっているので、まずはざくざく読んでみるといいですよ。
関数 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
プロパティ - C# によるプログラミング入門 | ++C++; // 未確認飛行 C

投稿2017/02/03 10:10

編集2017/02/03 10:23
tamoto

総合スコア4103

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

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

meroy25

2017/02/04 08:18

とても分かりやすいご説明ありがとうございます! 参考にします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問