在XCode中使用fprintf C有问题
having issues with fprintf C in XCode
我试图在Mac上的Xcode中使用c++中的fprintf输出物理项目。以前我在PC上使用过Turbo c++,并且没有类似输出的问题,就像我在下面写的那样……我试图将数据发送到。csv文件,以便在excel中创建图形/图表,但调试器讨厌我尝试的输出。有人可以帮助我,告诉我如何发送输出的xcode和excel或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,%fn",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
}
}
所以我看到这里有几个问题,在这一行你使用了错误的引号:
Project1 = fopen (“Users/Dave/Desktop/Project1.csv”,”w”);
应:Project1 = fopen ("Users/Dave/Desktop/Project1.csv","w");
有人指出c++没有power
运算符,^
是bitwise exclusive or
,你需要使用pow
函数来代替,所以这一行:
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;
另外,&
运算符是bitwise and
,在下面的上下文中,我认为你指的是&&
,它是logical and
,在这种情况下,它们将做同样的事情:
if(r1<xr[ib][jb] & r1>xl[ib][jb])
如果你是用c++开发的,我会使用c++版本的头文件:
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
相关文章:
- 我似乎对if/else的基本语句有问题:/
- 我在范围内未声明的错误类有问题
- 我的C++语言蛮力算法有问题
- 我关于函数"Assert"的C++代码有问题
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++类中的友元函数有问题?
- 我对数组即 0x6dfe78 有问题
- 我对 std::unique(算法)C++有问题
- 使用 fstream 库并在屏幕上打印的文件有问题?
- 这个模板为什么有问题?如何正确编译
- 我对 MyGraph 属性顶点名称和边权重有问题
- delete[]有问题,如何部分删除内存
- 在C++中使用exit()退出程序有问题吗
- 跳转到if(false)块有问题吗
- 查找有问题的宏
- 使用 rand() 和 srand() 有问题
- C++ 回文程序总是给出 0(假)作为输出问题;我的代码哪里有问题?
- 我在 C++ "out_of_range at memory location"有问题
- Fprintf对函数返回的字符有问题
- 在XCode中使用fprintf C有问题