【发布时间】:2017-12-03 05:20:49
【问题描述】:
当工作人员挖掘出 value"s" 的整个空间时,输出应该像这样打印出来,它会更改为 value"T",如果您可以帮助创建一个打印地图结构的函数,而不是每次都使用 for 循环我们也将不胜感激!:
Crew Dig Carry
1 3 1
2 2 5
3 4 1
4 1 3
你想把 1 号机组人员送到哪里?4s 1s 3s
1s 2s 3s
1s 5s 1s
1 3
您已移除此部分的所有沙子!
你想把船员 2 送到哪里?4s 1s 1T
1s 2s 3s
1s 5s 1s
2 2
我目前拥有的:#include <stdio.h>#include <stdlib.h>#include <string.h>
#define NUMCREW 4
#define MAXHOUR 8
#define MINHOUR 1
#define ROW 3
#define COL 3
struct pirate {
int dig;
int carry;
};
struct map {
int sand;
int treasure;
};
void printcrew(struct pirate * pirate_data);
void print(struct map * map_data);
int main() {
char filename[20];
int hour=8;
int crew=0;
int i, j, x, y;
int space;
struct map map_data[ROW][COL];
struct pirate pirate_data[NUMCREW];
FILE * ifp;
printf("You have arrived at Treasure Island!\n");
printf("What is the name of your map?\n");
scanf("%s", filename);
ifp = fopen(filename, "r");
for (i=0; i<ROW; i++){
for (j=0; j<COL; j++) {
fscanf(ifp, "%d %d", &map_data[i][j].sand, &map_data[i][j].treasure);
}
}
for (i=0; i<NUMCREW; i++) {
fscanf(ifp, "%d", &pirate_data[i].dig);
fscanf(ifp, "%d", &pirate_data[i].carry);
}
fclose(ifp);
for (hour=8; hour >= MINHOUR; hour--) {
printf("\nYou have %d hours left to dig up the treasure.\n", hour);
printcrew(pirate_data);
printf("\n");
for (crew=0; crew<NUMCREW; crew++){
printf("Where would you like to send crew member %d?\n", crew+1);
for(i=0; i<ROW; i++) {
for (j=0; j<COL; j++) {
printf("%ds\t", map_data[i][j].sand);
if (map_data[i][j].sand == 0) {
printf("%dT\t", map_data[i][j].treasure);
}
}
printf("\n");
}
scanf("%d %d", &x, &y);
map_data[x-1][y-1].sand = map_data[x-1][y-1].sand - pirate_data[crew].dig;
}
}
return 0;
}
void printcrew(struct pirate * pirate_data) {
int i;`
printf("Crew \t Dig \t Carry \n");
for (i=0; i<NUMCREW; i++)
printf("%d \t %d \t %d \n", i+1, pirate_data[i].dig, pirate_data[i].carry);
return;
}
void print(struct map * map_data) {
int i, j;
for(i=0; i<ROW; i++) {
for (j=0; j<COL; j++) {
printf("%ds\t", map_data[i][j].sand);
}
printf("\n");
}
return;
}
我的输出不断出现:
您想把 1 号机组人员送到哪里?4s 1s 3s
1s 2s 3s
1s 5s 1s
1 3
你想把船员 2 送到哪里?4s 1s 0s 1T
1s 2s 3s
1s 5s 1s
2 2
您想把 3 号机组人员送到哪里?4s 1s 0s 1T
1s 0s 1T 3s
1s 5s 1s
至于打印结构映射函数,我不断收到以下错误:
在函数“打印”中:|
错误:下标值既不是数组也不是指针也不是向量|
【问题讨论】: