C/C++の宿題をやらせろや!!!

このエントリーをはてなブックマークに追加
254素人でスマソ
 タートルグラフィックスのプログラムなのですが、  
#include <stdio.h>               
#include <ctype.h>
#include <stdlib.h>
int x,y,dx,dy;
void put_mark(int x, int y)
{ move(x-2,y-2); cont(x+2,y+2);
move(x+2,y-2); cont(x-2,y+2);
move(x,y);
}
void forward(){
x=x+dx;
y=y+dy;
cont(x,y);
put_mark(x,y);
}
void left_turn(){
int tmp;
tmp=dx; dx=-dy; dy=tmp;
}
void right_turn(){
int tmp;
tmp=dx; dx=dy; dy=-tmp;
}

   

   

255254の続き:03/01/16 19:32
void analysis(ch)
{
switch(ch){
case 'F': forward(); break;
case 'R': right_turn(); break;
case 'L': left_turn(); break;
}
}
void turtle()
{
int ch;
while((ch=getchar())!=EOF){
if(isalpha(ch)) analysis(ch);
}
}
int main()
{
openpl();
space(-300,-300,300,300);
x=0;
y=0;
dx=0;
dy=10;
put_mark(x,y);
turtle();
closepl();
return 0;
}
これをいじって数字を入力したらそれたを数値として読み取り、次のコマンドを繰り返し実行するようにしたいのですが、
どこをどうすればいいですか?
例えば、5Fと入力するとFFFFFとおなじ動きをする。
>>254
こんな感じにすればいいと思う。
void analysis(int ch)
{
  static int repeat_count = -1; /* < 0 は無効値 */
  int i;
  if (ch == 'F' || ch == 'R' || ch == 'L') {
    if (repeat_count < 0) repeat_count = 1;
    for (i = 0; i < repeat_count; i++) {
      switch(ch){
      case 'F': forward(); break;
      case 'R': right_turn(); break;
      case 'L': left_turn(); break;
      }
    }
    repeat_count = -1;
  } else if (isdigit(ch)) {
    if (repeat_count < 0) repeat_count = ch - '0';
    else repeat_count = repeat_count * 10 + ch - '0';
  }
}
257C++厨:03/01/16 20:09
>>247
std::printf("%02X", 255);で2文字幅16進文字が出力されます
cout<<setw(2)<<setfill('0')<<hex<<255; //C++の場合
258254の続き:03/01/16 21:21
>>256
ありがとうございます!