我想帶一個1000位的整數輸入所有的時間,&要添加的數字separately.is有任何冒這樣大的輸入的輸入法?服用大整數輸入都在C++中的時間
2
A
回答
0
你需要一個庫來爲此提供支持。
0
閱讀數字轉換成字符串,並使用多倍數學庫如GMP做加法。該庫應該具有在數字字符串和數字庫的內部表示之間進行轉換的功能。
(事實上,它看起來像GMP可以從istream
直接讀取數字,所以你可能甚至不需要一個字符串)。
0
我對這個問題有點不清楚。如果單獨添加數字,那麼我會以爲你更多的人把它當作一個字符串不是一個整數(至少,直到你開始添加了數字)。
你能澄清1000位的整數需要如何存儲在內存中?
+0
我不是很肯定我是否應該採取作爲輸入字符串或integer.if我把它作爲一個字符串,那麼如何我可以將每個數字轉換爲整數嗎? – 2010-12-03 07:02:48
3
你需要輸入作爲一個字符串。拆分它們,並將每個字符轉換爲整數。把它們加起來,就完成了。
實施例,這裏(隨機生成的)這個號:
9624526619162264306083309360203157186784123851390498919674886891002552146753945797326679482200717699585297042606470048297021049209667042255911984240697992738371633115195140494325737382583412562136836759072897211537655046343769659111215754043609344618490646811291135643554115350431099553593485744944746093896695837300975718819726339233383800764568364950577294931831936979504756278187812548901366714205562309364234394802723329400976924082450161974562063268243689930750925213262044910428021004262080895556879515597779404780565380480750286553508081070834339176079062215815331059349488936312244526697733596052063044560959189161656978673936732284706841120711543620038686227462170335634371808995466024671420024705248851244350701111587608201303840696489479021196275228499780922745352396928865910631672384263395712487735712098161853665189905194589355110620257494673972892816413534347360049692019184831019218764766067298983043791063184786671132332077197148683743991683245617836086353821268720434176862469084808
而這裏的C++程序:
int strint(std::string &str) {
int i;
std::stringstream intstr(str);
intstr >> i;
return i;
}
int main() {
std::string strdigit, schar;
int sum = 0;
std::cout << "Enter Digits: ";
std::cin >> strdigit;
std::stringstream ss;
for (int i = 0; i < strdigit.length(); i++) {
ss.clear();
ss << strdigit[i];
ss >> schar;
sum += strint(schar);
}
std::cout << sum;
}
總和是:4479
2
只需讀取的數字爲一個字符串並使用std :: accumulate。例如:
std::string str("1234567890"); // your number here
int result = std::accumulate(str.begin(), str.end(), 0, [](int val, char ch)
{
return val + (ch - '0');
});
std::cout << result << '\n'; // display the answer
0
正如馬龍建議的那樣,爲什麼不簡單地使用好的'ol for loop和string?
int main() {
string str = "3985792792679283635";
int len = str.length();
int sum = 0;
for(int i = 0; i < len; i++) {
sum += str[i] - '0';
}
cout << sum << endl;
}
相關問題
- 1. C#如何顯示用戶輸入的整數作爲時間
- 2. Java中的大整數輸入
- 3. 在SQL Server和C#中輸入「時間」#
- 4. Java - 在一行中輸出用戶輸入整數的整數
- 5. C++:Hackerank:在服用輸入
- 6. 以整數的輸入,直到C/C++
- 7. 輸入正整數時輸入錯誤
- 8. C++輸入驗證(時間)
- 9. 不能輸入時間:C++
- 10. 在C++中輸出2個整數之間的奇數數字
- 11. 如何告訴用戶在輸入字母時輸入整數?
- 12. C++用戶輸入整數變量的非整數值
- 13. 在C++中分離用戶輸入的時間
- 14. 您在輸入中輸入的每個單詞都會輸入到數組中
- 15. C++中的大整數
- 16. 在整個執行時間檢查stdin上的用戶輸入
- 17. 如何在c中輸入一個完整的行輸入?
- 18. C中數組大小的用戶輸入C
- 19. 你如何在C#中有用戶整數輸入?
- 20. 如何確保用戶在c中輸入整數?
- 21. 大-θ運行時間中的輸入大小N項
- 22. C++大整數
- 23. 如何在EditText中輸入時自動調整(放大)ListView?
- 24. 在O(n)時間中發現陣列中的10個最大整數時間
- 25. 在C#中輸入文本框中的字符之間的時間間隔
- 26. 使用ASP.NET(C#)在ACCESS DB中輸入日期/時間
- 27. 用戶輸入的時間
- 28. C++文件輸入流:看完「大」整數
- 29. 打印輸入整數從輸入整數到整數
- 30. 檢查在c + +中的合法整數輸入
如果你使用一個字符串,你可以使用一個for循環 – Marlon 2010-12-03 05:45:25