前提・実現したいこと
引数で指定された数までの過剰数を求めるプログラムの実装を別ファイルに書き、実行ファイル側にそのプログラムの使用と出力の実装を行ったところ、実行結果が何かおかしいので、質問しました。
これは、何が起きてこうなっているのかを教えていただきたいです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
8978624 9006664 18 20 24 28 30 36 40 42 48 54 56 60 66 70 72 78 80 84 88 90 96 100
実行結果です。
最初の2つ以外はあっているのですが、最初の2つが明らかにおかしい数字になっていて、どうしたことかと途方に暮れております。
該当のソースコード
myMath.cpp
C++
1#include "myMath.h" 2#include <vector> 3 4int* AbundantNumber(int num) { 5 int sum = 0; 6 std::vector<int> ans; 7 for (int i = 1; i <= num; ++i) { 8 if (IsAbundantNumber(i)) { 9 ans.emplace_back(i); 10 } 11 } 12 ans.emplace_back(-1); 13 14 return &ans.front(); 15} 16 17bool IsAbundantNumber(int num) { 18 int sum = 0; 19 for (int i = 1; i <= num; ++i) { 20 if (num % i == 0) { 21 sum += i; 22 } 23 } 24 25 return (sum >= num * 2); 26}
main.cpp
C++
1#include "myMath.h" 2#include <iostream> 3using namespace std; 4 5void Show(const int* arr) { 6 for (int i = 0; arr[i] != -1; ++i) { 7 cout << arr[i] << " "; 8 } 9 cout << endl; 10} 11 12int main(void) { 13 14 Show(AbundantNumber(100)); 15 16 return 0; 17} 18
試したこと
色々試しましたが、vectorをそのまま渡す方法でしか解決できそうになかったです。。。
補足情報(FW/ツールのバージョンなど)
Windows g++(MinGW.org GCC-6.3.0-1)6.3.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/16 10:53
2019/04/16 17:07