移動する順番を求めるプログラムです
説明はわかりやすく書いています。
エラー部分の内容の修正と、プログラム自体の考えはあっているのか教えて頂きたいです。
色々と考えましたが、これ以降わかりません。
距離は三角法です。
コード #include<stdio.h> #include <math.h> #define sqr(n) ((n)*(n)) typedef struct{ int num; /*家番号*/ double x; /*家の座標*/ double y; double distance; /*現在地から家までの距離*/ double weight; /*家への荷物の重さ*/ int compe; /*完了状況*/ }deliver; /*最初の荷物の重さ求める*/ void deliv_w(int num,double *weight){ int i; double sum=0.0; for(i=0;i<num;i++){ sum+=weight[i]; } } /*家までの距離を算出して、それぞれの距離を出力*/ double span(deliver pa,deliver pb) { int i,n; for(i=0;i<n;i++){ return sqrt(sqr(pa.x-pb.x)+sqr(pa.y-pb.y)); } } /*最短の家番号を出力*/ int effort(double *xpos, double *ypos,deliver c){ *xpos=c.x; *ypos=c.y; printf("%d\n",c.num); } /*変更される各データを設定*/ int deliv_c(deliver *c,deliver dest){ double d=span(c->num,dest); /*移動距離*/ if(0>=c->weight) /*重さが0*/ return 0; /*終了*/ c->num=dest; /*今いる位置を更新*/ c->weight-=d; /*重さを更新*/ return 1; } int main(void) { int i; deliver data[]= {{0,4.0,7.5,0.0,0.0,0},{1,3.0,4.5,0.0,2.3,0},{2,3.6,4.0,0.0,8.7,0},{3,7.0,2.0,0.0,6.0,0}; while(1){ printf(data[i]); /*順番を出力*/ } return 0; }
エラーはこんな感じです
main.c:29:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
main.c:36:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
main.c:40:17: error: passing 'int' to parameter of incompatible type 'deliver'
double d=span(c->num,dest); /移動距離/
^~~~~~
main.c:23:21: note: passing argument to parameter 'pa' here
double span(deliver pa,deliver pb)
^
main.c:43:11: error: assigning to 'int' from incompatible type 'deliver'
c->num=dest; /今いる位置を更新/
^~~~~
main.c:54:107: error: expected '}'
...;
^
main.c:54:19: note: to match this '{'
deliver data[]= {{0,4.0,7.5,0.0,0.0,0},{1,3.0,4.5,0.0,2.3,0},{2,3.6,4.0,0.0,8.7,0...
^
main.c:56:10: error: passing 'deliver' to parameter of incompatible type 'const char *'
printf(data[i]); /順番を出力/
^~~~~~~
/usr/include/stdio.h:318:43: note: passing argument to parameter '__format' here
extern int printf (const char *__restrict __format, ...);
^