#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//输入站点数 n 与最大载客数 g
void input_N_G(int a[])
{
cout << "请输入两个整数要求大于0且小于1000" << endl;
char c;
int i = 0;
while ((c = getchar()) != '\n')
{
if (c != ' ')//把这句判断条件改动
{
ungetc(c, stdin);
cin >> a[i++];
}
}
//++++需要通过asscii码判断如果不是整数则.......
}
//通过已知的数据计算出发时车上人数的可能性
int possibleNums(const int n, const int g, const vector<int> d_i)
{
int pos = 0; //可能的人数情况
int tem_sum = 0; //前几个数的和
vector<int> pos_num(n);
for (size_t i = 0; i < d_i.size(); i++)
{
for (size_t j = 0; j <= i; j++)
{
tem_sum += d_i[j];
}
pos_num[i] = g - tem_sum;
tem_sum = 0;
}
//找到其中的最小值
vector<int>::iterator q = min_element(pos_num.begin(), pos_num.end());
pos = (*q) + 1;
return pos;
}
void main()
{
int n = 0; //站点数 n
int g = 0; // 最大载客数 g
int a[2] = { 0, 0 };
int counts = 0; //可能的人数情况
///1, 输入站点数 n 与最大载客数 g
input_N_G(a); //++++bool来提高程序的鲁棒性
n = a[0];
g = a[1];
//测试输入的两个整数正确与否?
for (auto i : a)
{
cout << i << endl;
}
///2, 经过每站 i 后乘客数量变化 d_i
vector<int> d_i(n); //对应每站的乘客数量变化 d_i[n]
cout << "请输入" << n << "个整数要求大于-1000且小于1000" << endl;
for (size_t i = 0; i < d_i.size(); i++)
{
char c = ' ';
while ((c = getchar()) != '\n')
{
if (c != ' ')//把这句判断条件改动
{
ungetc(c, stdin);
cin >> d_i[i++];
}
}
}
//测试输入的n个站点的人数正确与否?
for each (auto var in d_i)
{
cout << var << endl;
}
///3, 通过以上的数据计算出发时车上人数的可能性
counts = possibleNums( n, g, d_i);
cout << counts << endl;
system("pause");
}
大疆机试程序
最新推荐文章于 2025-01-14 14:00:08 发布