111,121
社区成员
发帖
与我相关
我的任务
分享
横坐标 纵坐标
403 100.01
403 110.02
403 115.03
403 123.04
403 126.05
405 177.07
405 182.08
405 189.09
406 245.10
406 288.11
406 290.12
406 561.13 int[] arr1 = { 1, 2, 5, 15, 25, 66 };
int k = 0;
int b = arr1.Length;
int c = 1;
for (int i = 0; i < b - 1; i++)
{
for (int j = 0; j < b - c; j++)
{
if (arr1[j + c] > arr1[j])
k = arr1[j + c] - arr1[j];
//k存入数组
}
c++;
}

private void button2_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("hengzuobiao");
dt.Columns.Add("zongzuobiao");
DataRow dr;
dr = dt.NewRow();
dr[0] = 403;
dr[1]=100.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 403;
dr[1] = 108.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 403;
dr[1] = 110.51;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 403;
dr[1] = 113.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 403;
dr[1] = 118.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 403;
dr[1] = 125.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 405;
dr[1] = 111.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 405;
dr[1] = 126.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 405;
dr[1] = 127.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 405;
dr[1] = 133.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 405;
dr[1] = 158.01;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 405;
dr[1] = 197.01;
dt.Rows.Add(dr);
jisuan(dt);
ArrayList al = result;
}
private void jisuan(DataTable dt)
{
if (dt == null)
return;
DataView dv = new DataView(dt);
dv.Sort = dt.Columns[0].ColumnName;
dt = dv.ToTable();
string henzuobiaozonghe = "";
ArrayList al = new ArrayList();
int henzuobiaocount = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (henzuobiaozonghe.IndexOf(dt.Rows[i][0].ToString()) < 0)
{
henzuobiaozonghe += dt.Rows[i][0].ToString() + ",";
al.Add(dt.Rows[i][0].ToString());
henzuobiaocount++;
}
}
int[] leng = new int[henzuobiaocount];
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < henzuobiaocount; j++)
{
if (al[j].ToString() == dt.Rows[i][0].ToString())
{
leng[j]++;
break;
}
}
}
getString(leng, dt);
}
//计算每一种横坐标的初始下标和总数量
private void getString(int[] leng, DataTable dt)
{
int canshu = 0;
for (int i = 0; i < leng.Length; i++)
{
Addal(canshu, leng[i], dt);
canshu += leng[i];
}
}
ArrayList result = new ArrayList();
//计算每一种横坐标的差
private void Addal(int chushixiabiao, int zongshu, DataTable dt)
{
ArrayList al;
for (int i = 0; i < zongshu; i++)
{
al = new ArrayList();
for (int j = 0; j < zongshu; j++)
{
if (j + i + 1 > zongshu - 1)
break;
al.Add(dt.Rows[j + chushixiabiao][0] + "," + (Double.Parse(dt.Rows[j + chushixiabiao][1].ToString()) - Double.Parse(dt.Rows[j + chushixiabiao + i + 1][1].ToString())).ToString());
}
getReault(al, result.Count);
}
}
private void getReault(ArrayList al, int resultchushi)
{
for (int i = 0; i < al.Count; i++)
{
for (int j = i + 1; j < al.Count; j++)
{
if (al[i] == null || al[j] == null)
break;
if (al[i].ToString().Split(',')[0] == al[j].ToString().Split(',')[0] && Math.Abs(double.Parse(al[i].ToString().Split(',')[1])) == Math.Abs(double.Parse(al[j].ToString().Split(',')[1])))
result.Add(al[i].ToString().Replace("-", ""));
}
}
int shuliang = 1;//重复的次数
//int shuliang = 2;//出现的次数
for (int i = resultchushi; i < result.Count; i++)
{
for (int j = i + 1; j < result.Count; j++)
{
if (result[i].Equals(result[j]))
{
shuliang++;
result.RemoveAt(j);
}
}
result[i] = result[i].ToString() + "," + shuliang.ToString();
shuliang = 1;//重复的次数
//int shuliang = 2;//出现的次数
}
}
DataTable dt=…………//查出来的数据
jisuan(dt);
ArrayList al=getReault();
//得到横坐标的数量以及每一种横坐标的数量
private void jisuan(DataTable dt)
{
if (dt == null)
return ;
DataView dv = new DataView(dt);
dv.Sort = dt.Columns[0].ColumnName;
dt = dv.ToTable();
string henzuobiaozonghe = "";
ArrayList al = new ArrayList();
int henzuobiaocount = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (henzuobiaozonghe.IndexOf(dt.Rows[i][0].ToString()) < 0)
{
henzuobiaozonghe += dt.Rows[i][0].ToString() + ",";
al.Add(dt.Rows[i][0].ToString());
henzuobiaocount++;
}
}
int[] leng = new int[henzuobiaocount];
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < henzuobiaocount; j++)
{
if (al[j].ToString() == dt.Rows[i][0].ToString())
{
leng[j]++;
break;
}
}
}
getString(leng, dt);
}
//计算每一种横坐标的初始下标和总数量
private void getString(int[] leng, DataTable dt)
{
int canshu = 0;
for (int i = 0; i < leng.Length; i++)
{
Addal(canshu, leng[i], dt);
canshu += leng[i];
}
}
//计算每一种很坐标的差
ArrayList al = new ArrayList();
private void Addal(int chushixiabiao, int zongshu, DataTable dt)
{
for (int i = chushixiabiao; i < chushixiabiao + zongshu; i++)
{
for (int j = i + 1; j < chushixiabiao + zongshu; j++)
{
al.Add(dt.Rows[i][0] + ","+(Int64.Parse(dt.Rows[i][1].ToString()) - Int64.Parse(dt.Rows[j][1].ToString())).ToString());
}
}
}
private ArrayList getReault()
{
ArrayList result = new ArrayList();
for (int i = 0; i < al.Count; i++)
{
for (int j = i + 1; j < al.Count; j++)
{
if (al[i] == null || al[j] == null)
break;
if (al[i].ToString().Split(',')[0] == al[j].ToString().Split(',')[0] && Math.Abs(int.Parse(al[i].ToString().Split(',')[1])) == Math.Abs(int.Parse(al[j].ToString().Split(',')[1])))
result.Add(al[i].ToString().Replace("-", ""));
}
}
for (int i = 0; i < result.Count; i++)
{
for (int j = i + 1; j < result.Count; j++)
{
if (result[i].Equals(result[j]))
{
result.RemoveAt(j);
}
}
}
return result;
}
DataTable dt=…………//查出来的数据
jisuan(dt);
getReault();
110.02-100.01, 115.03-110.02, 123.04-115.03, 126.05-123.04 后又循环判断是否有重复,有则存入数组
115.03-100.01, 123.04-110.02, 126.05-115.03 后又循环判断是否有重复,有则存入数组
123.04-100.01, 126.05-110.02 后又循环判断是否有重复,有则存入数组
126.05-100.01 后又循环判断是否有重复,有则存入数组