2017-12-05 16 views
-4

何らかの理由で、 "total + = i;"文句を言わない仕事と私は「合計」を返すために行くとき、それはあなたがどんなにに入力し、これを実行した場合の答えが0のすべての私の他の数字が正しいと私はそれが何かを持っているかなり確信している0"total + = i;"何らかの理由で動作しません

long int sumOfGroup(int k) { 
    long int special = (k * k) + (k - 1); 
    long int limit = special - ((k-1) * 2); 
    cout << special << " " << limit << endl; 
    long int total = 0; 
    for(int i = special; i <= limit; i - 2){ 
     total += i; 
    } 
    return total; 
} 


int main() { 
    int k; 
    cin >> k; 
    long answer = sumOfGroup(k); 
    cout << answer << endl; 
    return 0; 
} 

として返します。 forループと関係がある。

+0

'のために(私は特別な= int型;私は=上限を<; I - 2)'は 'でなければなりません(私は特別な= int型;私は=上限を<; I = i - 2) '? –

+0

@BillFは出力として0を返します。 – undertaker

+1

'limit'は' special'よりも小さく、確かに 'for(int i = special; i> = limit; i - = 2)'になります。それは 'special +((k-1)* 2)'であり、代わりに 'i'を増加させるか、それとも '制限するべきですか?あるいは、特別なやり方で「限界」が間違っているのでしょうか?あなたがしようとしていることは明らかではありません –

答えて

0

total += iあなたのtotal += iは決して実行されないので効果がありません!

ループに入る前に、speciallimitの値は何に印刷されていますか?

+0

実行されないという事実は本当に質問に答えません; p、それは明らかですそれが実行されていないOPに)、質問はなぜそれがないのです –

+0

それは何も実行されないという意味ですか?コードでは、私はspecialとlimitの両方の値を表示することを示しています。あなたがk = 3の場合、specialは11に、limitは7にする必要があります。合計は27に等しくなければなりません。 – undertaker

+0

@undertaker - forの中間の条件はwhile条件ではなく、までの条件。 'i'が' limit'より大きい場合、ループは決して実行されません。 –

0

あなたのループのためにこれを試してみてください。

for(int i = special; i >= limit; i -= 2){ 
    total += i; 
} 
関連する問題