0

この.txtを開いて読むと思われる不思議なプログラムを書きました

`> krol.txt

3 7
3 13
2 4
3 1

次に、それをベクターに保存し、いくつかのアルゴリズムを使用してクレイジーな操作を行い、別のベクターに保存してファイルにストリーミングします。しかし、.exeを実行した後はおかしなことが起こっています。何も表示されず、何も起こりません。コンパイル中にエラーは発生しません...ええ。何が悪かったのかidk。何が悪いのかについて何か考えがありますか?

#include <iostream>
#include <fstream>
#include <vector>
#include <cstdlib>
using namespace std;
int nwd (int a,int b);
int main(){
    ifstream fin;
    fin.open("krol.txt");
    if (!fin) cout << "WTF" << endl;
    system("PAUSE");
    vector<int> tab;
    int i=0;
    int n=0;
    while (fin>> i){
        tab.push_back(i);
    }
    fin.close();
    vector<int> result;
    bool right=false;
    ofstream outFile;
    outFile.open("save.txt");
    i=0;
    result.at(0)=tab.at(0);
    while(result.at(i)!=1){
        if (right){
            result.push_back(tab.at(i+2));
        }
        else if (nwd(result.at(i),tab.at(i+2))==1) result.push_back(tab.at(i+2));
        else {
            result.push_back(tab.at(i+1)); right=true;
        }
        outFile << result.at(i) << " " ;
        i++;
    }
    outFile.close();
    return 0;
}
int nwd(int a,int b){
    while (a!=b){
        a>b ? a-=b : b-=a;
    }
    return a;
}
4

2 に答える 2

0

わかったと思います。コードwhile(result.at(i)!= 1){をこのコードwhile(tab.at(i)!= 1){に変更する必要があります。それはほんの少しのバグです。

于 2013-03-12T11:51:11.433 に答える
0

あなたのresultベクトルは空なので、これは

while(result.at(i)!=1){

out_of_range例外をスローし、プログラムを終了させます。

于 2013-03-12T11:52:20.870 に答える