如何根据一个整数的位置(偶数或奇数)将其分成两组

How to split a full=number into two groups according to their position(even or odd)

本文关键字:两组 位置 何根 一个 整数      更新时间:2023-10-16

我需要将一个txt文件拆分为两个数组txt文件包含完整的数字。我能不用绳子做吗?例如,对于输入

4(how many line)
2 1
3 7
8 0
3 7

我想要数组1包含(一行中的第一个数字)

{2 
3 
8 
3}

阵列2包含(行中的第二个数字)

{1 
 7
 0 
 7}

我该怎么做?只是好奇。。。这是一个不起作用的代码。。

ifstream ifs("sth.txt");
int g;
ifs>>g;
int girl[g];
int boy[g];
for(int i=0;i<2*g,i++;){
if (i%2==0)ifs>>gil[g];
if (i%2==1)ifs>>boy[g];}
cout<<boy[1];
ifstream ifs("sth.txt");
int g;
ifs>>g;
int girl[g];
int boy[g];
for(int i=0;i<g,i++;){
    ifs>>girl[i];
    ifs>>boy[i];
}
cout<<boy[0];

您正在读取girl[g]boy[g],而不是0..(g-1)

我还改变了阅读方式:在循环的一次迭代中,用两个int代替1。

最后,我改变了第一个计数(索引0),而不是boy的第二个元素。

ifstream ifs("sth.txt"); 
int g;
ifs>>g;
int girl[g];
int boy[g];
for(int i=0;i<g,i++;){
    ifs>>gil[i];
    ifs>>boy[i];
}
cout<<boy[0];

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

for(int i=1;i<=g;i+=2){
    ifs>>boy[(i-1)/2];
    if(i+1<=g)
        ifs>>girl[(i-1)/2];
}

std::string str((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
for(int i=0;i<g;i++){
  fscanf(str,"%d %d",boy[i],girl[i]);
}