0

我的输入就像

 4
 1 2
 3 4
 5 6
 7 8

我想要做的是将它分成两组。 如何根据位置(偶数或奇数)将完整=数字分成两组 我在这里问过。我认为答案是正确的。当我与男孩 [3] 核对时;似乎有问题。这是代码,我找不到错误?应该是 8

#include<fstream>
#include<iostream>
using namespace std;

int main(){
ifstream ifs("Q3_IN.txt"); 
int g;
ifs>>g;
int boy[g];int girl[g];
int a =0; int b = 0;
 for(int i=0;i<g;i++){
 if(i%2) ifs>>boy[b++];
 else ifs>>girl[a++];
 }
 cout<<boy[3];
 system("pause");
 return 0;}
4

2 回答 2

1

i < g*2是你的解决方案。您的输入大小是 2*g 但不是 g。

于 2013-07-25T13:03:29.973 回答
0

当然你不需要把它弄得这么复杂。一行总是有两个数字,所以

 for(int i=0;i<g;i++){
 if(i%2) ifs>>boy[b++];
 else ifs>>girl[a++];
 }

可以这样做:

 for(int i=0;i<g;i++){
    ifs>>girl[i] >>boy[i];
 }

无需检查它是偶数还是奇数,因为您只需要存储每个女孩然后是男孩。

于 2013-07-25T13:09:42.203 回答