-2
我得到了很多人在这个程序wandering: 想不明白为什么,请帮助。 该项目工程,它显示的图形,我需要,但我得到了开头为这些警告被MOVETO地方和LineTo等 以下是完整的程序:通过'double'转换2`void moveto(int,int)'的警告
int main()
{
int Um=220, f=5, R=5;
double XL=10, XC=5, t, Im, Z, fi; // jaunie mainīgie
int s=1000, n=0; // jaunie mainīgie datu masīvam - s-max.izmērs, n-aktuāls datu skaits
double ue[s],it[s],ur[s],ul[s],uc[s]; //datu masīvi
Z=sqrt(R*R+pow(XL-XC,2)); //Z aprēķins
Im = Um/Z; //Im aprēķins
fi = asin((XL-XC)/Z); //fi aprēķins
//Ķēdes modelēšanas cikls
for (t=0;t<=2;t+=0.002) //cikls mainot t no 0 lidz 2
{
ue[n] = Um*sin(2*M_PI*f*t); //ue (avota spriegums) datu ieraksts masīvā
it[n] = Im*sin(2*M_PI*f*t+fi); //it (strāva) datu ieraksts masīvā
ur[n] = Im*R*sin(2*M_PI*f*t+fi); //ur (rez.spriegums) datu ieraksts masīvā
ul[n] = Im*XL*sin(2*M_PI*f*t+fi+M_PI/2); //ul (spol.spriegums) datu ieraksts masīvā
uc[n] = Im*XC*sin(2*M_PI*f*t+fi-M_PI/2); //uc (kond.spriegums) datu ieraksts masīvā
n++; //mērījumu skaita palielināšana
}
for (int i=0; i<5; i++)
cout << "i = " << i << " " << ue[i] << " " << it[i] << " " << ur[i] << " " << ul[i] << " " << uc[i] << endl;
initwindow (1000,500,"Grafiks");
//Grafiku izvades cikls
for (int x=0; x<n-1; x++)
{
//ue grafika izvades komandas
setcolor(10); //krāsa
moveto(x,50-ue[x]*0.1); //kursora ievietošana
lineto(x+1,50-ue[x+1]*0.1); //līnijas zīmēšana
//ur grafika izvades komandas
setcolor(11);
moveto(x,150-ur[x]*0.1);
lineto(x+1,150-ur[x+1]*0.1);
//ul grafika izvades komandas
setcolor(12);
moveto(x,250-ul[x]*0.1);
lineto(x+1,250-ul[x+1]*0.1);
//uc grafika izvades komandas
setcolor(13);
moveto(x,350-uc[x]*0.1);
lineto(x+1,350-uc[x+1]*0.1);
//it 4 grafiku izvades cikls
for (int i=50; i<=350; i+=100)
{
//it grafika izvades komadas
setcolor(14);
moveto(x,i-it[x]);
lineto(x+1,i-it[x+1]);
}
}
while (!kbhit());
closegraph();
}
什么是例如结果的类型'50-UE [X] * 0.1'?这不是“双”吗?你将这个参数作为参数传递给一个以'int'作为参数的函数。一个'int'不能处理'double'可以处理的值的范围,因此你会得到一个警告。 –
如何编写一个能够再现问题的最小可编译示例? https://stackoverflow.com/help/mcve –
你可以明确地转换为'int'来摆脱警告(假设它真的是你想要的代码)。 – Jarod42