#include <math.h>
#include <stdio.h>
#define sqr(n) ((n) * (n))
typedef struct{
double x;
double y;
} Point;
typedef struct{
Point pt;
double fuel;
} Car;
double distance_of(Point pa, Point pb){
return sqrt(sqr(pa.x - pb.x) + sqr(pa.y - pb.y));
}
void put_info(Car c){
printf("現在位置 : (%.2f, %.2f)\n", c.pt.x, c.pt.y);
printf("残り燃料 : %.2fリットル\n", c.fuel);
}
int move(Car *c, Point dest){
double d = distance_of(c->pt, dest);
if(d > c->fuel) return 0;
c->pt = dest;
c->fuel -= d;
return 1;
}
int main(){
Car mycar = {{0.0, 0.0}, 90.0};
while(true){
int select;
Point dest;
put_info(mycar);
printf("移動しますか? yes:1/no:0 -> "); scanf("%d", &select);
if(select != 1) break;
printf("目的地を入力:1 / 移動距離を入力:2 -> "); scanf("%d", &select);
if(select == 1){
printf("目的地のx座標 : "); scanf("%lf", &dest.x);
printf("目的地のy座標 : "); scanf("%lf", &dest.y);
if(!move(&mycar, dest)) printf("移動できません\n");
}else if(select == 2){
printf("x方向の移動距離 : "); scanf("%lf", &dest.x);
printf("y方向の移動距離 : "); scanf("%lf", &dest.y);
dest.x += mycar.pt.x;
dest.y += mycar.pt.y;
if(!move(&mycar, dest)) printf("移動できません\n");
}
}
return 0;
}
0 件のコメント:
コメントを投稿