【发布时间】:2019-11-13 16:33:41
【问题描述】:
这个问题是我之前提出的问题的延伸。
Setting a reference number and comparing that to other data in textfile
我在一个文本文件中有一组 X 和 Y 数据坐标。
Recorded Data 1
X: 1081.02409791506 Y:136.538121516361
Data collected at 208786.9115
Recorded Data 2
X: 1082.82841293328 Y:139.344405668078
Data collected at 208810.0446
Recorded Data 4
X: 1525.397051187 Y:1163.1786031393
Data collected at 245756.8823
Recorded Data 5
X: 1524.98201445054 Y:1166.38589429581
Data collected at 245769.489
Recorded Data 6
X: 509.002294087998 Y:913.213486303154
Data collected at 277906.6251
Recorded Data 7
X: 479.826998339658 Y:902.689393940613
Data collected at 277912.9958
我想将第一组数据 X: 1081.02409791506 Y:136.538121516361 设置为参考点,然后分别用下一组数据 X 和 Y 减去自身,并检查结果值是否在 100 内的 X 和 Y 差异值,如果是,则继续操作。参考点应继续对以下数字执行此操作,直到到达± 100 range 之外。一旦在100 range之外,现在这组数据是X: 1525.397051187 Y:1163.1786031393,因为第一个数据和这个数据的差值超过了100,那么现在这组数据是下一个参考点,做同样的事情并减去下面的数据并检查结果值是否在100 内。一旦在100 range 之外,下一个数字是X: 509.002294087998 Y:913.213486303154,现在,那是新的参考点,并且做同样的事情。那是我的目标。简而言之,应该将参考点移动到一个新文件中。
此代码能够执行上述操作,但仅适用于下面显示的数字。
278
299
315
360
389
400
568
579
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ReadTextFile
{
class Program
{
static void Main(string[] args)
{ string inputFile = @"C:\Users\Student\Desktop\ConsoleApp1\ConsoleApp1\Data\TextFile.txt"; // INPUT FILE
string outputFile = @"C:\Users\Student\Desktop\Test.txt"; // OUTPUT FILE
string[] data = File.ReadAllLines(inputFile); // READING FORM FILE
int TotalLine = data.Length; // COUNT TOTAL NUMBER OF ROWS
List<string> FinalList = new List<string>(); // INITIALIZE LIST FOR FINAL RESULT
double CurrentNumber = double.Parse(data[0]), NextNumber, diff; // INITIALIZE OF LOCAL VARIABLES, CURRENT NUMBER = FIRST NUMBER FROM FILE
for (int cntr = 1; cntr < TotalLine; cntr++) // FOR LOOP FOR EACH LINE
{
NextNumber = double.Parse(data[cntr]); //PARSING NEXT NUMBER
diff = CurrentNumber - NextNumber; // GETTING DIFFERENCE
if (diff <= 100 && diff >= -100) // MATCH THE DIFFERENCE
{
continue; // SKIP THE LOGIC IF DIFFERENCE IS LESS THEN 100
}
else
{
FinalList.Add(CurrentNumber.ToString()); // ADDING THE NUMBER TO LIST
CurrentNumber = NextNumber; // POINTING TO NEXT NUMBER
}
}
FinalList.Add(CurrentNumber.ToString()); // ADDING LAST NUMBER
foreach (string d in FinalList) // FOR EACH LOOP TO PRINT THE FINAL LIST
Console.WriteLine(d);
File.WriteAllLines(outputFile, FinalList); // SAVING TO THE FILE
}
我如何为 2 个坐标做同样的事情?
第一个条件:X 或 Y 至少有 1 个微分值在± 100 range 之外,该组数据是新的参考数据。
第二个条件:如果x和Y的差值都在± 100 range之内,我们必须继续操作。
【问题讨论】:
-
每种坐标类型都有一个文件,一个用于 X,一个用于 Y?
-
不,我显示的是 1 个文本文件
-
该文件的外观如何?就像上面发布的代码一样?带有标题“记录数据”和空白行等...?
-
我已经编辑好了,请再看一遍问题
标签: c# interaction