Talk is cheap, show me the code.
一、問題描述
信號測量的結果包括測量編號和測量值。存在信號測量結果丟棄及測量結果重複的情況。
1.測量編號不連續的情況,認爲是測量結果丟棄。對應測量結果丟棄的情況,需要進行插值操作以更準確的評估信號。
採用簡化的一階插值方法,由丟失的測量結果兩頭的測量值算出兩者中間的丟失值。
假設第M個測量結果的測量值爲A,第N個測量結果的測量值爲B。則需要進行(N-M-1)個測量結果的插值處理。進行一階線性插值估計的第N+i個測量結果的測量值爲A+( (B-A)/(N-M) )*i (注:N的編號比M大。)
例如:只有測量編號爲4的測量結果和測量編號爲7的測量結果,測量值分別爲4和10
則需要補充測量編號爲5和6的測量結果。
其中測量編號爲5的測量值=4 + ((10-4)/(7-4))*1 = 6
其中測量編號爲6的測量值=4 + ((10-4)/(7-4))*2 = 8
2.測量編號相同,則認爲測量結果重複,需要對丟棄後來出現的測量結果。
請根據以上規則進行測量結果的整理。
詳細描述:
接口說明
原型:
intCleanUpMeasureInfo(MEASURE_INFO_STRUCT* pOriMeasureInfo,intnOriMINum,intnMaxMIRst, MEASURE_INFO_STRUCT* pMeasureInfoRst);
輸入參數:
MEASURE_INFO_STRUCT* pOriMeasureInfo: 原始測量結果內容,以結構數組方式存放。測量編號已經按升序排列。
MEASURE_INFO_STRUCT定義包含編號和測量值,見OJ.h
int nOriMINum: 原始測量結果個數。
int nMaxMIRst: 整理的測量結果最大個數。
輸入參數:
MEASURE_INFO_STRUCT* pMeasureInfoRst: 整理的測量結果
返回值:
Int 整理的測量結果個數
輸入描述:
輸入說明
1 輸入兩個整數m, n
2 輸入m個數據組
輸出描述:
輸出整理後的結果
輸入例子:
2 3
4 5
5 7
輸出例子:
4 5
5 7
二、問題分析
這道題又是一道坑題,題意不明,第一行給出的n完全沒用,而且對於除法的定義沒有給出是帶小數除法還是自動取整的除法。
#include <iostream>
using namespace std;
int main()
{
int m, n;
while (cin >> m >> n)
{
int k, v;
if (m == 1)
{
cin >> k >> v;
cout << k << " " << v << endl;
} else {
cin >> k >> v;
m--;
int a, b;
a = k;
b = v;
cout << a << " " << b << endl;
while (m--)
{
cin >> k >> v;
if (k == a)
continue;
else {
for ( int i = 1; i <= k - a - 1; i++)
{
cout << a + i << " " << b + ((v - b)/(k - a)) * i << endl;
}
cout << k << " " << v << endl;
a = k;
b = v;
}
}
}
}
return 0;
}