お元気さまです。わくワークの義(ヨシ)です。
プログラミングスキルアップのために、paizaラーニングで練習問題を解いています。
練習問題は、次のリンクから確認することができます。
今回は、1回目の提出が25点でした。原因は、方向を示すDの値を初期値の1にするところを0にしたミスでした。
東西南北を数値に置き換えて制御しました。
スタート地点では、北を向いている設定だったので、北を1、東を2、南を3、西を4として制御しました。
進む方向の指示である左右は、向いている方向により、XY座標の進行方向が変わるので、向きと方向によって、処理を変えています。
#include <stdio.h>
int main(void){
char str[1000];
int x,y,n,d,i;
char lr;
d=1;
fgets(str, sizeof(str), stdin);
sscanf(str,"%d %d %d",&x,&y,&n);
for(i=0;i<n;i++){
fgets(str, sizeof(str), stdin);
sscanf(str,"%c",&lr);
if(lr=='R'){
switch(d){
case 1:
x++;
d++;
break;
case 2:
y++;
d++;
break;
case 3:
x--;
d++;
break;
case 4:
y--;
d=1;
break;
}
}
else {
switch(d){
case 1:
x--;
d=4;
break;
case 2:
y--;
d--;
break;
case 3:
x++;
d--;
break;
case 4:
y++;
d--;
break;
}
}
printf("%d %d\n",x,y);
}
return 0;
}
引き続きAランクへのレベルアップを目指して、練習問題を進めます。
それでは、今日もワクワクな一日を!
チャオチャオ!