我正在尝试在我的C ++项目中生成尖叫代码,以便将它们分配给雷达目标。
Squawk代码用于识别使用二级雷达的飞机,它们是4位八进制代码(例如7066 7067 7070 ......):http://en.wikipedia.org/wiki/Transponder_(aeronautics)
我想有一个函数根据给定的最后一个代码生成一个尖叫代码,此代码目前存储在一个int中。
我想有这样的事情:
while (IsSquawkInUse(LAST_ASSIGNED_MODEA_VFR) && LAST_ASSIGNED_MODEA_VFR < 7070) {
if (LAST_ASSIGNED_MODEA_VFR >= 7067) {
break;
}
else {
//increment LAST_ASSIGNED_MODEA_VFR
}
}
我还没有找到任何关于如何实际做到这一点,而不必生成所有现有代码并从thoses中选择下一个代码。
我还是C ++的新手,非常感谢帮助。
Cordialement
答案 0 :(得分:0)
#include <iostream>
#include <string>
using namespace std;
int main() {
// source number as string
string x;
cin >> x;
// convert it into a number
int y = 0;
for (int i = 0, ilen = x.size(); i < ilen; ++i) {
y *= 8; // it's octal
y += x[i] - '0';
}
// add 1 to that number
++y;
// if we have a code 7777, next should be 0000
y = y & 07777;
// clear string x, so that we can
x.clear();
// write an octal number there as string
while (y) {
x = char(y % 8 + '0') + x;
y /= 8;
}
// output that number
cout << x << endl;
}