2017-07-20 7 views
-7

(N^2 + N^3)を11で割ったときの余りは、11で割ったときのN(> 100)の剰余が5になります。 私はこれを試しましたが、間違っています。 C言語でこの数学的パズルの実装ですか?

#include <iostream> 
#include <cmath> 

using namespace std; 

int main() { 

    int x;  
    for(int N; N < 100; ++N)  
     if(N % 11 == 5) 
     { 
      ((pow(2, N) + pow(3, N)) % 11) = x; 
      cout<<x;  
     } 
    return 0; 
} 
+0

あなたは決して 'x'に割り当てません。' N'に初期値を与えることは決してありません。このコードは2つの理由から非常に間違っています。 – crashmstr

+3

_「間違っています」_は有効な問題文ではありません。[ヘルプセンター](http://stackoverflow.com/help)にアクセスし、[よくある質問をどうやってください]セクションを読んでください(http://を参照してください)。 –

+3

'((pow(2、N)+ pow(3、N))%11)= x;'どのコンパイラがこの行をエラーなしで受け入れますか? – user463035818

答えて

1

++あなたは変数に値をこのように割り当てる:プログラミングする際

a = 4; 
b = 3; 
b = a; // here b becomes 4, not the other way 

は、数学の式のように考えてはいけません。私が知っているほとんどの言語では、変数に値を代入するのは右から左(x = 2)です。

また、あなた(ここではNが初期化されていなかった)、それを読む前にすべての変数を初期化する必要があります。少なくとも

for (int N = 0; ... 

最後にではなく、N^3はpow(N, 3);です。あなたが書いたのは3^Nです。 N^2はN*Nで簡単に実装できます。

修正プログラムが実行されます。

+0

それは実行されますが、問題は明らかに解決されていません。 – user463035818

+0

「読み込む前にすべての変数を初期化する必要があります」という文章は、ベストプラクティスを意味しています。すべての変数は値を読み込んでから読み込む必要があります。 –

+1

@ tobi303実行すると、彼はそれを自分で変更することができるので、おそらくタスクを解決するでしょう。このようにして、彼は間違いなく喜んでいるコーディングについて学ぶ(少なくとも私は彼がそれの初期の状態にいると仮定する)。 –

関連する問題