1

该程序运行完美,我的向量的数字最终出现在我的文件中,但它们并没有反转。

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

void reversevector(vector<double> &vd, int i, int j)
{
    if(i>=j) {
        double temp = vd[i];
        vd[i]=vd[j];
        vd[j]=temp;
        i++;
        j--;
    }
}
int main() {
    double n = 0;
    vector<double> vd;
    while (cin>>n) {
        vd.push_back(n);
    }

    reversevector(vd,0,vd.size()-1);

    ofstream ofs("reversedlist.txt");

    if(!ofs) {
        cout<<"error";
        exit(1);
    }

    for(int i=0; i<vd.size(); i++){
        ofs<<vd[i];
    }

    ofs.close();
}

例如:如果我将 12345 放入我的向量中,它应该将 54321 打印到我的文件中。当我打开我的文件时,它仍然包含 12345。

4

4 回答 4

6

线

if (i >= j)

reversevector函数中应该是

while (i < j)

否则,您有条件地交换第一个和最后一个数字,然后立即退出。

于 2012-11-26T04:28:13.470 回答
3

你调用你的方法,说:

reversevector( {1,2,3,4,5} , 0, 4 )

然后进入

if (0>=4) {
  ...
 }

然后退出该方法 - 没有任何反应。

当然,如果您调试过.

于 2012-11-26T04:29:11.600 回答
2

反向向量中没有循环。它将运行一次然后退出。您需要遍历数组并替换它才能工作。

于 2012-11-26T04:28:38.703 回答
1

您的reversevector函数最多交换两个元素。您必须交换两个以上的元素才能反转向量。由于if无论如何都将是错误的测试条件,它实际上根本不会做任何事情。

于 2012-11-26T04:28:25.283 回答