我需要 10 个带循环的结果,但我无法做到,我只能得到 4 个结果如何修复我的循环

  • 本文关键字:结果 循环 何修复 arrays c loops
  • 更新时间 :
  • 英文 :

struct nokta
{
double x,y;
} nokt[5] = {{5,-2},{-3,-2},{-2,5},{1,6},{0,2}};
struct daire
{
int c;
double R;
};
int main()
{
int i,j;
double distance[30];

for(i=0; i<4; i++)
{
distance[i]=sqrt((pow(nokt[i].x+nokt[i+1].x,2)+pow(nokt[i].y nokt[i+1].y,2)))
}
for(i=0;i<4;i++)
{
printf("_%lf",distance[i]);
}
return 0;
}

据我所知,你试图找到所有点之间的距离。正确的您的错误是只计算nokt数组中一个点和下一个点之间的距离。例如,找不到nokt[0]nokt[2]的距离。因此,您需要在已经使用过的for loop中再添加一个for loop。此外,您可能需要为您的特定目标构建函数,例如查找距离等。最后,如果指数是一个小的自然数,则最好在math.h中使用您自己的幂函数,而不是pow(double, double)函数。原因是C中没有pow(double,int(函数,所以在您的情况下,您可以使用pow(double,double)进行更复杂的计算。请参阅此讨论。

我希望这个代码能解决你的问题。否则,请告诉我。

#include <stdio.h>
#include <math.h>
struct nokta
{
double x,y;
} nokt[5] = {{5,-2},{-3,-2},{-2,5},{1,6},{0,2}};
double mySquareFunc(double x);
double findDistance(struct nokta p1, struct nokta p2);

int main(){
int i,j,indX = 0;
double distance[10];
for(i=0; i<5; i++){
for(j=i+1;j<5; j++){
distance[indX] = findDistance(nokt[i],nokt[j]);
indX++;
}
}
for(i=0;i<10;i++)
{
printf("_%lf",distance[i]);
}
return 0;
}
double mySquareFunc(double x){
return x*x;
}
double findDistance(struct nokta p1, struct nokta p2){
return sqrt(mySquareFunc(p1.x-p2.x)+mySquareFunc(p1.y-p2.y));
}

最新更新