「 4 次元空間を軸に沿って距離 1 ずつ移動する A さんを考える.ここで A さんの位置は (x1,x2,x3,x4), ま た,x1,x2,x3,x4 に対応する次元の番号はそれぞれ 1, 2, 3, 4 とする.A さんの初期位置を (0, 0, 0, 0) と し,次元番号(1 から 4)を入力したときはその次元方向に 1 移動し,マイナス次元番号(−4 から−1) を入力したときはその次元方向に−1 移動するプログラムを作成せよ.ただし,−4,−3,−2,−1,1,2,3,4 以外が入力された場合は,原点から現在の A さんまでのユークリッド距離を計算し終了すること.また, プログラム中で使用する変数は全て int 型とすること. 」という問題で
[実行例]
$ ./a.out
(0, 0, 0, 0)
Input: 1
(1, 0, 0, 0)
Input: -3
(1, 0, -1, 0)
Input: -3
(1, 0, -2, 0)
Input: 0
Euclidean distance = 2.236068
のとき最後のユークリッド距離を少数で表す方法と次元番号を入力した際の位置の表し方がわかりません。自分で組んだものは以下の通りです。
#include <stdio.h> #include <math.h> int main(void) { int x1 = 0; int x2 = 0; int x3 = 0; int x4 = 0; int num = 0; int distance = 0; while (trunc) { printf("Input:"); scanf("%d",&num); printf("\n"); if (num == 1) x1++; else if (num == 2) x2++; else if (num == 3) x3++; else if (num == 4) x4++; else if (num == -1) x1--; else if (num == -2) x2--; else if (num == -3) x3--; else if (num == -4) x4--; else { distance = (int)ceil(sqrt(x1 * x1 + x2 * x2 + x3 * x3 + x4 * x4)); printf("Distance = %d", distance); break; } } printf("\n"); return 0; }
回答1件
あなたの回答
tips
プレビュー