,所以我讓我的C++程序一個奇怪的錯誤消息。目前正在使用視覺工作室(2012)。我有一個程序添加了一個數字的其他數字,所以1234567就像7 + 5 + 3 + 1 = 16,然後我把所有非增加的數字和em乘以2並加上em。然後我把第一個(16)的結果加起來並加到第二個結果中。這裏是我的代碼:隨機1無法解析的外部錯誤
#include <iostream>
#include <cmath>
#include <string>
#include <sstream>
using namespace std;
int sumAltDigits(int);
int sumNonDigits(int);
int main() {
long cardNumber; //cardNumber must stay as 'long'. Teacher says so.
string in;
stringstream ss;
int total;
cout << "Please enter a chain of integers: ";
getline(cin, in);
ss.clear(); ss.str(in);
while (!(ss >> cardNumber) || (cardNumber < 1)); {
cout << sumAltDigits(cardNumber) << endl;
//get answer
total = sumAltDigits(cardNumber) + sumNonDigits(cardNumber); //this line causes me an error, sumNonDigits(cardNumber)
}
system("pause");
}
// adds every other digit, starting from the right
int sumAltDigits(int cardNumber)
{
if (cardNumber < 10)
return cardNumber;
return (cardNumber % 10) + sumAltDigits(cardNumber/100);
}
// adds digits that were not included in previous step, multiply them by 2, then add all digits in those numbers
int sumNonDigits(string cardNumber) // I think the error is also being caused by string cardNumber, but if i try to change that, it screws up this function.
{
int checkSum = 0;
int i;
for (i = cardNumber.length() - 2; i >= 0; i -= 2) {
int val = ((cardNumber[i] - '0') * 2);
while (val > 0) {
checkSum += (val % 10);
val /= 10;
cout << checkSum << endl;
}
}
return checkSum;
}
哦該死!我不能相信我錯過了這一點。呃,當我改變int sumNonDigits(int)到(字符串)時,它說我不能將long cardNumber轉換爲一個字符串cardNumber – 2013-02-25 02:03:11
@Averagekid:不,你需要用'std:'調用'sumNonDigits() :string'。也許'in'就足夠了? – Johnsyweb 2013-02-25 02:09:30
恩,對不起,我對字符串不太瞭解,還挺新的C++。你什麼意思? – 2013-02-25 02:19:25