小テスト問題 (昨年試験 問題4)

指令によってxy平面上を移動するロボットがある. 初期状態では原点に位置し, y軸方向を向いている(図の斜線つき矢印). 指令は0か1のいずれかで, 0は「現在向いている方向に 1 進む」を あらわし, 1は「現在位置はそのままで左に90度向きを変える」をあらわす. たとえば, 初期状態から「0,0,1,0,0,1,0」という指令によって, ロボットは図の太線の経路をたどり, 最終的に(-2,1)という座標に到達する.

下のプログラムは,一行に一つずつ10個の指令を入力して, 最終的に到達する位置のx座標とy座標を出力するものである. 空欄を埋めてプログラムを完成させよ. このプログラムは「基礎プロくん」の課題4として実行する.

#include <stdio.h> int main(void){ int x; int y; int dx; int dy; char buf[256]; int i; int data; int tmp; x = 0; y = 0; dx = 0; dy = 空欄A ; for(i=0; i<10; i++){ gets(buf); data = atoi(buf); if(data == 0){ x = x + 空欄B ; y = y + 空欄C ; } else if(data == 1){ tmp = dx; dx = 空欄D ; dy = 空欄E ; } } printf("%d %d\n", x, y); return 0; }
入力の例
0 1 0 1 0 0 1 0 0 0
対応する出力
2 -1