0

さて、while ループの代わりに for ループを使用して無限の合計を計算しようとしていますが、くそったれなコードが機能しておらず、その理由がわかりません。「I got here」の 2 つの ONCE を取得し、その後何も取得しません。:\

私のコードが機能せず、フリーズまたはハングしているように見える理由を知っている人はいますか? ループは私が作った方法で終わるはずですよね?これが現在の問題のコードです

        check=0;
        cerr << "I got here" << endl;
        for (int m=1;m<m+1;m++)
        {
          cerr << "I got here" << endl;
            for (int n=1;n<n+1;n++)
            {
                if (check==0)
                {
                  anaPhi[i][j][k]=1.0/(m*m*m*n*n*n)
                  *cos(k*deltat*sqrt(5.0)*pi/4.0
                  *sqrt(m*m+4.0*n*n))
                  *sin(m*pi*i*h/4.0)
                  *sin(n*pi*j*h/2.0);
                  check=1;
                }
                else
                {
                  anaPhi[i][j][k]= anaPhi[i][j][k]
                  +1.0/(m*m*m*n*n*n)
                  *cos(k*deltat*sqrt(5.0)*pi/4.0
                  *sqrt(m*m+4.0*n*n))
                  *sin(m*pi*i*h/4.0)
                  *sin(n*pi*j*h/2.0);
                }
            }
        }
    }

このコードをテストしたところ、このコードも機能しません!

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int b=0;
    for (int m=1;m<m+1;m=m+2)
    {
        b=cos(b)+sqrt(b);
    }
    cout << b << endl;
    return 0;
}
4

3 に答える 3

1

ループ条件が間違っています。どうしてm<m+1偽になるのでしょうか?

于 2013-05-06T02:34:54.610 に答える
1

もう1つのポイント:

 if (check=0)

する必要があります

 if (check == 0) //^^logical comparison not assignment
于 2013-05-06T02:41:15.787 に答える
1

いくつかの問題があります。

  1. if(check=0)チェックは常に 0 に設定されます。

  2. 使っているのでn= n+2、壊れることはありません。ある時点で n = 0x7FFFFFFE (最大の正の偶数) になるため、この場合 n+1 は > n です。次に、0x80000000 (最も負の符号付き整数、それでも偶数) にラップし、n+1 は引き続き > n になります。n = 0x7FFFFFFF を取得できた場合、n + 1 は整数のラップアラウンドにより実際には n より小さくなります。

  3. 条件セットを満たす以外に for ループから抜け出す方法はないようです。

于 2013-05-06T02:42:09.933 に答える