2017-04-11 12 views
-1
static void Main(string[] args) 
    { 
     int[] hours = new int[30]; 
     const decimal HOURLY_RATE = 2.5M; 
     const decimal MAX_FEE = 20.00M; 
     decimal pay; 
     double average; 
     int counter = 0; 
     string line; 
     StreamReader fileSR = new StreamReader("hours.txt"); 
     line = fileSR.ReadLine(); 
     while (line != null) 
     { 
      hours[counter] = int.Parse(line); 
      counter = counter + 1; 
      line = fileSR.ReadLine(); 
     } 
     fileSR.Close(); 
     Console.WriteLine("Hours  Parking Fee"); 
     for (int i = 0; i < hours.Length; i++) 
     { 
      pay = Math.Min(hours[i] * HOURLY_RATE, MAX_FEE); 
      Console.WriteLine("{0,4} {1,10}", hours[i], pay.ToString("C")); 
     } 
     Console.ReadKey(); 
    } 
} 

としてを使用してtxtファイルから平均を出し作業についてのヘルプが必要です私は、StreamReaderをを使用して、txtファイルから平均をうまくする方法についての手掛かりを持っていない、と述べました。私が何か助けてもらえるといいですね。コードを編集して自由に編集してください。C#がStreamReaderを

現在、コードはコンソールアプリケーションに出力され、時間と駐車料金が表示されます。しかし、その下で私は駐車料金の平均を言いたい。

+0

申し訳ありません。ここではコードを書いていません。あなたはあなたの特定の問題が何であるか、それがあなたが期待した通りに働いていないことを教えてください。私たちに「コードを編集して自由に使えるようにしてください」と言えば、ここではそれをカットするつもりはありません。 – krillgar

+0

@krillgar私のコードを書く必要はありません。 StreamReaderを使用しているときにテキストファイルの平均をどのように計算するかについての説明が必要です。 –

+1

ストリームリーダーを使用する必要がない場合は、少し単純です: 'var average = File.ReadAllLines(" hours.txt ")。Select(int.Parse).Average();' –

答えて

1

この場合、StreamReaderの使用は無関係です。あなたが今やっていることは、ファイルの値を配列に埋め込むことです。これらの値はhours配列に格納されます。ここから

、最も簡単な方法は、その配列からの平均を取ることであろう。

double sum = 0; 
for (int i = 0; i < hours.Length; i++) 
{ 
    sum += hours[i]; 
} 
double average = sum/hours.Length; 

または直接LINQと例えば、それに似たもの:

using System.Linq; 

// ... 

double average = hours.Average(); 
+0

ありがとう!駐車料金の平均を計算したいのであれば、どうすればいいですか? (駐車料金は時間* HOURLY_RATEです) –

+0

平均は線形なので、平均の計算は必要ありません。平均から直接計算することができます(average_fee = average_hours * HOURLY_RATE)。この回答があなたの問題を解決した場合、それを受け入れたものとしてマークすることができます。 – heltonbiker