-1
下面的代码为什么此代码会为我的号码添加额外的零?
#include "stdafx.h"
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool qualities(double number){
//function qualities, irrelevant to question
}
int main(){
double pandigital = 123456789;
double sum = 0;
string strpan = to_string(pandigital);
while (next_permutation(strpan.begin(), strpan.end())){
cout << strpan << endl;
if (qualities(pandigital)){
sum += pandigital;
}
next_permutation(strpan.begin(), strpan.end());
break;
}
cout << "sum is " << sum << endl;
cin.get();
}
具有这段代码
double pandigital = 123456789;
double sum = 0;
string strpan = to_string(pandigital);
while (next_permutation(strpan.begin(), strpan.end())){
cout << strpan << endl;
开始的问题是strpan有一个额外的零附加到它,这是一个错误存在以下问题。如果我给pandigital添加一个零,所以我们有1234567890
,它仍然会附加一个额外的零。
你想做什么?它看起来像你将这些数字转换为一个字符串,然后将字符串连接起来。 – Falmarri
我将数字转换为一个字符串,对它进行排列,然后(稍后)将其转换回整数。 break语句是临时的,当程序结束时会被删除。 –
由于'pandigital'不会在你的代码中改变'品质(pandigital)'总是会评估为相同的值。所以你可以从'while'循环中取出它。 –