繁体   English   中英

用C替换数组的元素

[英]Replacing elements of an Array in C

我正在为某项战舰计划工作。 我很难找到一种放置船只的好方法。 我一直在尝试的想法是用零填充10x10数组,然后将特定坐标替换为c(用于航母),d(用于驱逐舰)等。但是我做得还不是很成功。 如果有人对我的操作方法有任何想法,或者您知道更好的方法,那么我们将不胜感激。

抱歉,这是我第一次在线咨询。 并回答问题。 不,我不知道该怎么做数组,这就是我寻求帮助的一部分。 我一直在阅读我的教科书,但是我没有发现任何类似的东西,并且在没有具体理解的情况下,很难超越书中所说的去思考。 但这是我到目前为止仅用于创建策略板和游戏板以及我尝试放置船只的代码

   //================================FillArray==========================================
void FillArray(int pboard[], int sboard[]);
{

    //Statement
    for(int y; y < col; y++);
    {
        printf("%d", y);//prints y axis boarder
        for(int x=0; x < row; x++);
        {
        printf("%d", x);//prints x axis boarder
        for(int y=0; y < col; y++);
            pboard[row][col] = 0;
        }//for
    }//Fills array for play


    for(int y; y < col; y++);
    {
        printf("%d", y);//prints y axis boarder
        for(int x=0; x < row; x++)
        {
        printf("%d", x);//prints x axis boarder
        for(int y=0; y < col; y++);
            sboard[row][col] = 0;
        }//for
    }//Fills array for Ships

    return;
}//FillArray


//================================PlaceShips==========================================

void PlaceShips(int air=5, int bat=4, int cru=3, int des=1, int sub=2);
{

    char ship;
    int x,y;
    int k;

    //Statement

    printf("Enter first letter of ship name: ");
    if(scanf("%c", ship) == a)
        { printf("You have 5 space, Please enter furthest left or futhest up coordinate: ");
            scanf("%d%d", &x,&y);
            while(x>10 && y > 10)
                {
                    printf("Enter 1. to place ship vertically\nEnter 2. to place ship horizontally: ")
                    scanf("%d", &k)
                    for(k==1, y > 6, y++);
                    {   pboard[row][y-1] = a;
                            if(y<0 || y >9)
                        printf("error");
                    }
                    for(k==2, x > 6, x++);
                    {
                        pboard[x-1][col] = a; 
                        if(x < 0 || x > 9)
                        printf("error");
                    }
                }
        }
}

这是执行此操作的好方法,还是有更有效的方法? 我尝试了类似的结构:

typedef struct
{
char id[5]={a,a,a,a,a}
char name[]=aircraft
int hits=5
} Aircraft Carrier

但我不确定他们会如何帮助。

 for(&k==1, y > 6, y++)

我想这是您遇到的问题之一。

首先,您需要使用;分隔for()语句;

其次,您正在访问k的地址 ,并检查是否相等。 for语句的第一部分通常设置一个变量。 您需要重新考虑自己的逻辑。

        while(x>10 && y >> 10)

>>> ,请小心。

您似乎在PlaceShips函数中尝试执行过多PlaceShips 这是一个风格问题,但是我可能首先要编写一个PlaceOneShipHorizontally()和一个PlaceOneShipVertically() function.

例如,

void PlaceOneShipHorizontally(int board[], int ox, int oy, int character, int size) {
  for (int x = ox; x < (size+ox); x++) {
    board[x][oy] = character;
  }
}

然后,一旦确定用户要执行的操作,请编辑PlaceShips()函数以使用上述函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM