2017-01-20 56 views
3

私は関数が新しく、実際の動作を理解しようとしています。私の先生は、関数を1から12の範囲で関数はその数の時間話をすることを意図していたので、私はユーザーに数字を入力するように頼みました。数字が1より小さく、12より大きい場合は終了し、そうでなければ関数に数値を渡してからforループを使用しました。 (私が知っている限り)私のために乗算を行うが、何も起こらないようですか?私が何か本当に愚かなことをしているのか疑問に思っていますが、どんな助けも大歓迎です。C++の関数を使った乗算

0から iが0から numを設定し、そのためその後の任意の乗算うとしている実行
#include <iostream> 
using namespace std; 

int TimesTables (int num); 

int main(int argc, const char * argv[]) { 
    int number; 
    cout << "enter a number to multiply by, with a range of 1-12: "; 
    cin >> number; 
    if (number < 1 && number > 12) 
     return EXIT_FAILURE; 
    else { 
     int tables = TimesTables(number); 
     cout << tables; 
    } 
    return 0; 
} 
int TimesTables (int num) { 

    for (int i = 0; num <=12; i ++) 
     num = num * i; 
    return num; 
} 
+4

デバッガを使用してコードをステップ実行する方法を知る必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:** [小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver

答えて

1
for (int i = 0; num <=12; i ++) 
    num = num * i; 

ここi 0から始まるので、あなたは後で行う任意の乗算結果(num)には影響しませんを服用してはいけません。また、あなたは1から12に行きたいので、あなたは12で0と仕上げから始めるべきである - したがって、この変更1、または12

で1とフィニッシュから起動します。これに

for (int i = 0; num <=12; i ++) 

を:

for (int i = 1; i <=12; i ++) 

あなたはiが12に達したときに停止することから、ないnumiのカウンターです!

+1

ご協力ありがとうございます – Dean

+0

ようこそ@Dean。そして、あなたは愚かな間違いはありません、あなたは学んでいるので、尋ねるのは良いことでした。私はまた、次回のお手伝いをする簡単な初心者のデバッグテクニックで、私の答えを更新しました! PS - 答えを受け入れる*ことを忘れないでください。 – gsamaras

+1

このコードは機能しません、gsamaras。しかし、あなたがこれを実行した場合、あなたはそれをあなた自身で見ることができました。 –

4

ループもかなり疑わしいです。 i <= 12ではなく、num <= 12をチェックしていますか?

はあなたのループは、フォーム

for (int i = 1; i <=12; i ++){ 
    // Print num * i 
    cout << num * i; 
} 
// There's no need to return anything back to the caller 
+0

本当にありがとう、本当にばかげたミス私の部分は、しかし、私は何かを返していない場合、私はエラー "コントロールが非void関数のenに達する"私は私はリターンが必要だと思った?特にnumをメインに戻して結果を出力しようとしているので、 – Dean

+0

教師の指示に従っているのでnumを返すのが良いと思いますので、コースの流れに関係しています。ところで、あなたの答えは私のものよりも早く来たようです。だから私はあなたのものと少し違うように私のものを少し更新しました。 +1。 – gsamaras

+0

今私はプログラムを実行するだけで私にエラーが返され、すべてのポインタの位置がわかります?それをもう少し周りに混乱させて、それを修正しようとすると、あなたの助けの人のためにもう一度、ありがとう! – Dean

関連する問題