それに貰ったのはいいのですが、その中身を理解しきれていないので提出する気もありません。理解したうえで提出したいです。
ヒントだけでもよいので、教えていただけないでしょうか。C言語は構造体まで学習しましたが理解度は低いです。
以下はもらったソースです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE_X 2000
#define SIZE_Y 2000
char map[SIZE_Y][SIZE_X];
int l, t, r, b;
void map_clear()
{
memset(map, '-', sizeof(map));
l=SIZE_X;
r=-1;
t=SIZE_Y;
b=-1;
}
void map_print()
{
int y;
for(y=t;y<=b;y++)
{
printf("%.*s\n", r-l+1, map[y]+l);
}
}
void mark(int x, int y)
{
if(x<0 || SIZE_X<=x || y<0 || SIZE_Y<=y)
{
printf("Out of range. x=%d y=%d\n", x, y);
exit(1);
}
map[y][x]='#';
if(l>x) l=x;
if(r<x) r=x;
if(t>y) t=y;
if(b<y) b=y;
}
int main()
{
int x, y, vx, vy, i, num;
char dir[2];
map_clear();
x=SIZE_X/2;
y=SIZE_Y/2;
while(scanf("%1s%d", dir, &num)==2)
{
vx=vy=0;
switch(dir[0])
{
case 'a': vx=1; break;
case 'c': vx=-1; break;
case 'b': vy=1; break;
case 'd': vy=-1; break;
}
for(i=0;i<num;i++)
{
x+=vx;
y+=vy;
mark(x, y);
}
map_print();
}
return 0;
}
それを以下に挙げておきます。
・19~22行目までの定義する意味
・32,39,41,45~48行目の意味
・58,59行目で/2をしている理由
・74,76行目でなぜまたmark()とmap_print()がでてきたのか
長々とすみません。
これを学習範囲内で書き直したいと思うのですがやはり考えが甘いでしょうか…。