问题:
假定有7个输入端口,有2种输入状态:1(有效)、0(无效)。端口编号分别为0~7,编号越大优先级越高,
请设计一个电路来筛选出有效端口中优先级最高的那一个。(输出端口也是有7个,端口编号分别为0~7。每次输
出都只有一个端口有效,其余无效,而这个有效端口的编号为筛选结果)
个人做法:
对于有效端口中优先级最高的那个端口,一定不存在优先级更高的有效端口
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print(bool status)
{
cout << status << " ";
}
int main(int argc, char const *argv[])
{
cout << "Please enter your ports' status: (0 or 1)" << endl;
std::vector<bool> v;
for (int i = 0; i < 7; ++i)
{
bool buffer;
cin >> buffer;
v.push_back(buffer);
}
v.at(5) = (!v.at(6) && v.at(5));
v.at(4) = (!v.at(6) && !v.at(5) && v.at(4));
v.at(3) = (!v.at(6) && !v.at(5) && !v.at(4) && v.at(3));
v.at(2) = (!v.at(6) && !v.at(5) && !v.at(4) && !v.at(3) && v.at(2));
v.at(1) = (!v.at(6) && !v.at(5) && !v.at(4) && !v.at(3) && !v.at(2) && v.at(1));
v.at(0) = (!v.at(6) && !v.at(5) && !v.at(4) && !v.at(3) && !v.at(2) && !v.at(1) && v.at(0));
cout << "Filter Output:" << endl;
for_each(v.begin(), v.end(), print);
return 0;
}