|
楼主 |
发表于 2024-3-11 09:59:31
|
显示全部楼层
bool Input_every_frame(int frame, int &money, int id_, vector<Goods> &goods_array, vector<Berth> &berth_array, vector<Robot> &robot_array,
vector<Boat> &boat_array)
{
char line[1024];
int i = 0;
Goods goods_array_temp;
Robot robot_array_temp;
Boat boat_array_temp;
while (fgets(line, sizeof line, stdin))
{
if (line[0] == 'O' && line[1] == 'K')
{
return true;
}
if (i == 0)
{
i++;
scanf("%d", &money);
continue;
}
if (i == 1)
{
i++;
scanf("%d", &id_);
continue;
}
if (i > 1 && i <= 1 + id_)
{
i++;
scanf("%d %d %d", &goods_array_temp.x, &goods_array_temp.y, &goods_array_temp.amount);
goods_array.push_back(goods_array_temp);
continue;
}
if (i > 1 + id_ && i <= 1 + id_ + robot_num)
{
if (frame == 1)
{
scanf("%d %d %d", &robot_array_temp.status, &robot_array_temp.x, &robot_array_temp.y);
robot_array.push_back(robot_array_temp);
i++;
}
else {//其他帧数组不为空,直接修改
if (robot_array.size() < i - 2 - id_ + 1)
robot_array.resize(i - 2 - id_ + 1);
scanf("%d %d %d", &robot_array[i - 2 - id_].status, &robot_array[i - 2 - id_].x, &robot_array[i - 2 - id_].y);
i++;
}
continue;
}
if (i > 1 + id_ + robot_num)
{
if (frame == 1)
{
scanf("%d %d", &boat_array_temp.status, &boat_array_temp.num);
boat_array.push_back(boat_array_temp);
i++;
}
else
{
if (boat_array.size() < i - 2 - id_ - robot_num)
boat_array.resize(i - 2 - id_ - robot_num);
scanf("%d %d", &boat_array[i - 2 - id_ - robot_num].status, &boat_array[i - 2 + id_ - robot_num].num);
i++;
}
if (i > 6 + id_ + robot_num)
return true;
continue;
}
}
return false;
}为什么会越界 |
|