【问题标题】:get the final result after looping through a list of data遍历数据列表后得到最终结果
【发布时间】:2017-11-16 00:56:41
【问题描述】:

我在一个数组中有一组数据。其中第一个值将表示记录数,第二个数字将相应地表示一条记录中的数据数。数据会循环计算,直到记录数等于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.99
8.01
10.01
(第二组记录)
0.98 -> ((8.00+6.00) + (9.20+6.75))/2 - (8.00+6.00)
0.98

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

我的输出

171.38 135.36
117.36
118.57 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);
}

【问题讨论】:

  • 你能用数据发布数组声明吗?
  • @Darkonekt 实际上,我从文本文件中获取了数据并将其存储在字符串数组中。下面是我使用的代码。公共静态字符串 [] inputFileLines = null;尝试 { inputFileLines = File.ReadAllLines(inputFile); } foreach(inputFileLines 中的字符串 val){ Console.WriteLine(val);我的输出 3 2 10.00 20.00 4 15.00 15.01 3.00 3.01 3 5.00 9.00 4.00 2 2 8.00 6.00 2 9.20 6.75 0 $171.38 $135.36 $117.36 $118.57 $102.62

标签: c# console-application


【解决方案1】:

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

        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();

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2017-07-16
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多