[ad_1]
#include <iostream> int addArray(int nums, int k){ int temp = 0; for(int i = 0; i < sizeof(nums); i++){ temp = temp * 10 + nums[i]; } return temp + k; } int main() { int nums1[] = {1,0,0,0}; int res = addArray(nums1, 300); std::cout<<res; }
私が試したこと:
配列を整数に追加しようとしていますが、このエラーが表示されます。 私に何ができる?
解決策 1
最初に for ループを使用して配列をループしたいと思います。
sizeof(array) だけを使用すると、配列の合計サイズがバイト単位で表示されますが、配列の長さは表示されません。 そのためには、配列が保持するデータ型のサイズで結果を除算する必要もあります。 この場合、int.
したがって、ループは次のようになります
C++
for(int i = 0; i< sizeof(nums)/sizeof(int); i++)
これで問題が解決するはずです。
解決策 2
見積もり:int addArray(int nums, int k){
これは間違っています。 nums
整数の配列でなければなりません (とにかく、配列のサイズも渡す必要があります)。
試す
C++
#include <iostream> int addArray(int num[], size_t num_size, int offset) { int temp = 0; for(size_t n = 0; n < num_size; ++n) { temp = temp * 10 + num[n]; } return (temp + offset); } int main() { int num[] = {1,0,0,0}; int res = addArray(num, sizeof(num)/sizeof(int), 300); std::cout << res << std::endl; }
次のように書くこともできます。
C++
#include <iostream> #include <numeric> int main() { int num[] = {1,0,0,0}; int result = 300 + std::accumulate( std::begin(num), std::end(num), 0, [](int a, int b){ return a*10 + b; }); std::cout << result << std::endl; }
[ad_2]
コメント