求折线数据的差值,求大师指教

假如有一组数值 1,3,7,16,8,4,20,30;
1~4个数字是上升趋势, 4到6个数字是下降趋势, 6到8个数字是上升趋势,能不能依次求出每个趋势段的数据呢?
预期得到的结果应该是 15,-14,26

不知道为什么是-14,应该是-12吧

#include <iostream>
using namespace std;
int main()
{
int dat[] = { 1,3,7,16,8,4,20,30 };
int N = 8;
int sign = (dat[1] > dat[0]);
int start = dat[0];
for (int i = 2; i < N; i++)
{
if (sign != (dat[i] > dat[i - 1]))
{
cout << dat[i - 1] - start << endl;
start = dat[i - 1]; sign = (dat[i] > dat[i - 1]);
}
}
cout << dat[N - 1] - start << endl;
}

结果

15
-12
26

http://codepad.org/Wilu67jx

谢谢大神啊,真实的需求是如下内容在一个txt里面,需要解析txt文件,然后输出结果,请大师再指点一下呢
2016 1201 1 1
2016 1202 1 1
2016 1203 1 2
2016 1204 1 18
2016 1205 1 13
2016 1206 1 8
2016 1207 1 20

最后想得到的结果是
2016 1201 1 1 -- 直接打印出的文本第一行
2016 1204 1 17 -- 17为第4行第4列减第1行第4列的结果
2016 1206 1 -10 -- -10为第6行第4列减第4行第4列的结果
2016 1207 1 12 -- 12为第7行第4列减第6行第4列的结果