##問題
次の展開図から得られるサイコロを転がすシミュレーションを行うプログラムを作成してください。
サイコロの各面には図のとおりに 1 から 6 のラベルが割りあてられています。
入力としてサイコロの各面のラベルに対応する整数と、転がす命令の列が与えられるので、サイコロの上面の整数を出力してください。シミュレーションの初期状態は、図のとおりのラベルの位置でサイコロが置かれているものとします。
C言語
1#include <string.h> 2#include <stdio.h> 3 4int main (void) { 5int dice_up, dice_front, dice_right, dice_left, dice_back, dice_douwn; 6int i=0, sub; 7char a[100],buf; 8 9scanf ("%d %d %d %d %d %d",&dice_up,&dice_front,&dice_right,&dice_left,&dice_back,&dice_douwn); 10 11scanf ("%s",a); 12for (i=0;a[i]!='\0';i++) { 13printf ("%c",a[i]); 14if (a[i]=='\0') { 15break; 16} 17 18switch (a[i]) { 19case 'E': 20sub=dice_douwn; 21dice_douwn=dice_right; 22dice_right=dice_up; 23dice_up=dice_left; 24dice_left=sub; 25 26case 'N': 27sub=dice_douwn; 28dice_douwn=dice_back; 29dice_back=dice_up; 30dice_up=dice_front; 31dice_front=sub; 32 33case 'W': 34sub=dice_douwn; 35dice_douwn=dice_left; 36dice_left=dice_up; 37dice_up=dice_right; 38dice_right=sub; 39 40case 'S': 41sub=dice_douwn; 42dice_douwn=dice_front; 43dice_front=dice_up; 44dice_up=dice_back; 45dice_back=sub; 46 47} 48} 49 50printf ("%d\n",dice_up); 51 52return 0; 53}
##入力値
1 4 8 16 32
EEWSN
のとき
##実行結果
16
になってしまいます。
正しい答えは32だそうです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/06 02:08