2017-06-28 36 views
-5

概要:2つの整数(num1、num2)が与えられた場合、num1 ... num2で割り切れる数の数を返す関数を書く。 例:count(3,15)は5(3,6,9,12,15)を返します。 注:インクルーシブ範囲を考慮する必要があります 入力:2つの数値num1、num2。 num1、num2> = 0与えられた数値で割り切れる数を数えるプログラム

OUTPUT:num1..num2の間でnum1で割り切れる数を返します。

エラーの場合:エラーの場合は-1を返します。 これは私のコードです:

int count(int num1, int num2) { 
    int temp; 

    int i, j,k; 

    i = num1; 
    j = num2; 
    temp = 0; 
    for (k = 1; k <= j;k++) 
    { 
     if (k%i == 0) 
      temp++; 


    } 

    return temp; 

} 

Visual Studioでテストケースを実行している唯一のテストが渡され、別のテストはテストのために渡されていないが。 私が強調した部分は、失敗したテストです。 (countzeroテストケース)

enter image description here 以下は、ツールで実行しようとしたときにスローされるエラーです。 enter image description here 助けてください

+2

テキストの画像を投稿しないでください。 [ask]を読んでください。 – Olaf

+0

あなたができる最も有用なことは、言葉で言えば、あなたのコードがいくつかの簡単なテストケースのために何をすると思いますか自分自身に語りかけることです。それが簡単な場合は、失敗したテストケースから始めることができます。あなたは失敗したケースが何であるかを示していませんが、 'count(9、10)'を試してみましょう。返される答えは "0"でなければならないと思いますが、実装は "1"になります。 'num1'が9で' num2'が10であるときのコードを歩いていく。 –

+0

画像が表示されません。とにかく、あなたが挿入された数字の間の数字を数えたいと言ったように、あなたは 'for'ループで1から始まります。'for(k = num1; k = num2; k ++){if(k%num1 == 0)temp ++;} –

答えて

1

あなたはほぼあります。ここに尋ねられたものの擬似コードがあり、関数と比較して不足している部分を追加し、問題のないテストに合格するはずです。

関数(NUM1、NUM2)、戻ってカウント

  • チェック入力は、記載された範囲内である:NUM1 < = NUM​​2? num1、num2> = 0?
    • ない場合は、-1を返し
  • を私たちは、%を使用NUM1 == 0ならばゼロ
    • による除算を避けるために、入力をチェックし、戻ります-1
  • (i = num1; i < = num2; ++ i)
  • i%num1 == 0の場合、すべてのエラーの場合は、既にカバーされている場合
  • エンドループに
  • リターン回数をカウント++)、
    • 安全であるULD。
  • 関連する問題