0

物理プロジェクトの目的で、Mac 上の Xcode の C++ 内で fprintf を使用して出力しようとしています。以前は PC で Turbo C++ を使用していましたが、以下に書いたように同様の出力で問題はありませんでした... xcel でグラフ/チャートを作成するためにデータを .csv ファイルに送信しようとしていますが、デバッガーは嫌いです私が試みた出力。誰かが私を助けて、出力を xcode から xcel または mac の数値プログラムに送信する方法を教えてください。コードの何が問題になっていますか? ありがとうございます!

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

int main ()
{
    int ia,ja,ib=1,jb=1,n=1,t=1;
    float Ia[25],Ja[25],C[25][25],Wbb[25][25];
    float xl[25][25],xr[25][25],Pr[25][25],Nr[25][25];
    float max,r1,H=0;

    max=RAND_MAX;
    FILE * Project1;
    Project1 = fopen ("Users/Dave/Desktop/Project1.csv","w");

    Ia[n]=3;
    Ja[n]=3;
    for(t=1;t<100;++t) //time step counter
    {
        n=1;
        for(n=1;n<26;++n) //# of states to look at
        {
            ia=Ia[n];
            ja=Ja[n];
            ib=1;

            for(ib=1;ib<6;++ib) //determine I[n]'s C[ia][ja] values (initially will be the same due to ICs)
            {
                jb=1;
                for(jb=1;jb<6;++jb)
                {
                    C[ia][ja]=100*(ia-ib)^2+100*(ja-jb)^2+1;
                }
            }
            fprintf(Project1, "%d,%d,%d,%f\n",n,ia,ja,C[ia][ja]);

            ib=1;
            for(ib=1;ib<6;++ib) //determine Wsrs and delta x's for each system I[n] {
            {
                jb=1;
                for(jb=1;jb<6;++jb)
                {
                    Wbb[ib][jb]=C[ia][ja]/((100)*(ia-ib)^2+100*(ja-jb)^2+1);
                    xl[1][1]=0;
                    xr[ib][jb]=xl[ib][jb]+Wbb[ib][jb];
                    fprintf(Project1,"%d,%d,%f,%f,%f",ib,jb,Wbb[ib][jb],xl[ib][jb],xr[ib][jb]);
                    xl[ib][jb+1]=xr[ib][jb];
                }
            }

            r1=rand()/max; //randomly select new state and determine it's ib,jb value and reassign to new ia, ja at next time step
            ib=1;
            for(ib=1;ib<6;++ib)
            {
                jb=1;
                for(jb=1;jb<6;++jb)
                {
                    if(r1<xr[ib][jb] & r1>xl[ib][jb])
                        Nr[ib][jb]++;
                    Ia[n]=ib;
                    Ja[n]=jb;
                }
            }
        }

        ib=1;
        for(ib=1;ib<6;++ib)
        {
            jb=1;
            for(jb=1;jb<6;++jb)
            {
                Pr[ib][jb]=Nr[ib][jb]/25;
                H=Pr[ib][jb]*log(Pr[ib][jb])+H; //Compute Total Entropy Function of all systems by adding each systems entropy
            }
        }

        fprintf(Project1,"%f",H); //print out the Entropy at each time step
    }   
}
4

1 に答える 1

1

したがって、ここにいくつかの問題があります。この行では、間違った引用符を使用しています。

Project1 = fopen (“Users/Dave/Desktop/Project1.csv”,”w”);

次のようにする必要があります。

Project1 = fopen ("Users/Dave/Desktop/Project1.csv","w");

誰かが指摘したように、C++ にはpower演算子がないため、代わりに関数を使用する必要がある^ため、次の行:bitwise exclusive orpow

C[ia][ja]=100*(ia-ib)^2+100*(ja-jb)^2+1;

だろう:

C[ia][ja]=100*pow((ia-ib),2)+100*pow((ja-jb),2)+1;

また、&演算子は aであり、次のコンテキストでは、どちらが aであるbitwise andかを意味していると思いますが、この場合は同じことを行います。&&logical and

 if(r1<xr[ib][jb] & r1>xl[ib][jb])

また、C++ で開発している場合は、ヘッダー ファイルの C++ バージョンを使用します。

#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
于 2013-03-18T01:03:37.107 に答える