循环遍历数据列表后得到最终结果

时间:2017-11-16 00:56:41

标签: c# console-application

我在数组中有一组数据。第一个值表示记录数,第二个数字表示一个记录中的数据数。数据将循环并计算,直到记录数等于0。

  

3 - >第1组 - 没有记录3
  2 - >记录1包含两个数据值
  10.00 - >数据1
  20.00 - >数据2
  4 - >记录2包含四个数据值
  15.00
  15.01
  3.00
  3.01
  3
  5.00
  9.00
  4.00
  2 - >第2组 - 没有记录2
  2
  8.00
  6.00
  2
  9.20
  6.75
  0

我需要计算一组记录的总和,并且需要将其从记录的数量中除去,然后需要从每个记录中最小化该值以获得该值(在减少总和/否后得到记录)


输出
  

(第1套记录)
  1.99
  8.01
  10.01
  (第2套记录)
  0.98 - > ((8.00 + 6.00)+(9.20 + 6.75))/ 2 - (8.00 + 6.00)
  0.98

这是我提出的代码,但我得到的结果不同,无法找到错误的地方。

我的输出

  

171.38< - 第1组记录
  135.36
  117.36
  118.57< - 第2组记录
  102.62

// (inputLines is the name of the array with data)

int data = 0;
float temp = 0;
List<string> tempOutputFileList = new List<string>();

while (inputLines[data] != "0")
{
    var listOfPeople = new List<float>();
    int people = int.Parse(inputLines[data]);

    for (int n = 0; n < people; n++)
    {
        data = data + 1;
        int receipts = int.Parse(inputLines[data]);

        for (int p = 0; p < receipts; p++)
        {
            data = data + 1;
            temp += float.Parse(inputLines[data]);
            listOfPeople.Add(temp);

            if (listOfPeople[n].ToString() != null)
            {
                listOfPeople[n] = temp;
            }
        }
    }

    float sum = 0;
    string tempValue = null;
    double receiptValue = 0;

    foreach (float item in listOfPeople)
    {
        sum += item;
    }

    for (int v = 0; v < people; v++)
    {
        receiptValue = (sum / people - listOfPeople[v]);
    }

    data++;
    tempOutputFileList.Add(" ");
    listOfPeople.Clear();
}

foreach (string val in tempOutputFileList)
{
    Console.WriteLine(val);
}

1 个答案:

答案 0 :(得分:0)

您需要在汇总整组记录后计算平均值。但是,另一方面,如果您只存储每个人的总和,您还可以简化计算平均值的方法。请参阅以下代码以生成您期望的结果(但有些符号不同):

        int data = 0;
        List<string> tempOutputFileList = new List<string>();

        while (inputLines[data] != "0")
        {
            var listOfPeople = new List<float>();
            int people = int.Parse(inputLines[data++]);

            for (int n = 0; n < people; n++)
            {
                int receipts = int.Parse(inputLines[data++]);
                float tempPeople = 0;

                for (int p = 0; p < receipts; p++)
                {
                    tempPeople += float.Parse(inputLines[data++]);
                }

                listOfPeople.Add(tempPeople);
            }

            foreach (float item in listOfPeople)
            {
                Console.WriteLine(listOfPeople.Average() - item);
            }
        }

        Console.ReadLine();