1

私は C++ でプロジェクトのオイラー問題に取り組んでおり、問題 22 のコードで立ち往生しています。以下は私の cpp で、得られる答えは 871202730、つまり 4448 が高すぎます。ソートされたリストを出力し、いくつかの名前のスコアが正しく計算されていること、および名前の数が正しいことを確認しました。うまくいけば、それは単純なものであり、それを調べるために新鮮な目が必要なだけです. 質問へのリンク。

#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <string>
#include <sstream>
using namespace std;

int main() {
    int sum = 0;
    vector<string> names;
    char name[50], junk[5];
    string str;
    ifstream inFile;
    inFile.open("docs/names.txt");

    while(!inFile.eof()) {
        inFile.getline(junk, 50, '/"');
        inFile.getline(name, 50, '/"');
        stringstream sstr;
        sstr << name;
        sstr >> str;
        names.push_back(str);
    }

    sort(names.begin(), names.end());

    for(int i=0; i<names.size(); i++) {
        int namesum = 0;
        for(int j=0; j<names[i].size(); j++)
            namesum += (names[i][j] - 64);
        sum += (namesum*i);
    }

    cout << "Sum: " << sum << endl;
    return 0;
}
4

1 に答える 1