0

これは「C:\grades」のコンテストです:

Khaled
80
90
70
Ammar
100
99
100
Wael
43
56
79

これは私が使用したコードです:

StreamReader sr = new StreamReader("C:\\grades.txt");
StreamWriter sw = new StreamWriter("C:\\ava.txt");
string line;
float sum=0;
float avg=0;

while ((line = sr.ReadLine()) != null)
{
    if ((line[0] >= 65 && line[0] <= 90) || (line[0] >= 97 && line[0] <= 122))
    {
        avg = sum / 3;
        if (avg != 0)
            sw.WriteLine(avg.ToString());
        sum = 0;
        avg = 0;
        sw.WriteLine(line);
    }
    else
    {
        sw.WriteLine(line);
        sum += float.Parse(line);
    }
}

このコードは、次のようなテキスト ファイルを作成することです。

Khaled
80
90
70
80
Ammar
100
99
100
99.66
Wael
43
56
79
59.33

ここで、追加された数値は平均です。

4

2 に答える 2

2

ライターを適切に破棄する必要があります。そうしないと、出力がフラッシュされません。

string line;
float sum=0;
float avg=0;

using(StreamReader sr = new StreamReader("C:\\grades.txt"))
using(StreamWriter sw = new StreamWriter("C:\\ava.txt"))
{
    while ((line = sr.ReadLine()) != null)
    {
        if ((line[0] >= 65 && line[0] <= 90) || (line[0] >= 97 && line[0] <= 122))
        {
            avg = sum / 3;
            if (avg != 0)
                sw.WriteLine(avg.ToString());
            sum = 0;
            avg = 0;
            sw.WriteLine(line);
        }
        else
        {
            sw.WriteLine(line);
            sum += float.Parse(line);
        }
    }
}
于 2013-04-19T11:58:51.570 に答える