Saya mencoba membuat papan tampilan yang mengambil chardan menampilkannya di lokasi yang ditentukan. Berikut ini adalah kode yang menunjukkan apa yang saya lakukan untuk "menggambar" papan.

const int height = 3;
const int width = 10;
char board[width][height];

void draw()
{
    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            if (!(x == 9))
            {
                cout << board[y][x];
            }
            else
            {
                cout << board[y][x] << endl;
            }
        }
    }
}

Sekarang, jika saya membuat fungsi untuk mengisi array dengan 'a' untuk mengujinya dan memanggil draw(), itu berjalan dengan baik dan inilah hasil yang saya dapatkan

aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa

Fungsi array isi:

void fillarray()
{
    for (int a = 0; a < height; a++)
    {
        for (int b = 0; b < width; b++)
        {
            board[a][b] = 'a';
        }
    }
}

Namun, jika saya mencoba menentukan lokasi menggunakan fungsi berikut, hasilnya berantakan

void write(char c, int x, int y)
{
    board[y][x] = c;
}

Bagaimana saya menelepon write()

write('a', 1, 1);

Jadi saya pasti melakukan sesuatu yang salah dalam fungsi write tetapi saya tidak tahu apa karena saya agak baru di c++. Juga terima kasih sebelumnya untuk membantu.

Sunting: Rasanya akan membantu jika saya memasukkan hasil yang saya dapatkan ketika saya menelepon write()

    a
 a
3
user12291970 15 Maret 2020, 21:15

1 menjawab

Jawaban Terbaik

Papan Anda dinyatakan sebagai:

char board[width][height];

Tetapi Anda menulis ke array papan seperti ini:

cout << board[y][x];

Di mana "y" adalah variabel tinggi Anda dan "x" adalah variabel lebar Anda. Saya pikir Anda memiliki variabel indeks untuk array 2-d terbalik. Jangan Anda benar-benar berarti mengatakan.

cout << board[x][y];

Semua pernyataan tugas Anda di fungsi Anda yang lain memiliki bug yang sama.

Atau lebih baik lagi, jadi Anda tidak perlu memperbaiki semua kode Anda, cukup nyatakan papan sebagai:

char board[height][width];

Juga, beberapa perubahan gaya kode untuk meningkatkan kode Anda.

Alih-alih ini:

    for (int x = 0; x < width; x++)
    {
        if (!(x == 9))
        {
            cout << board[y][x];
        }
        else
        {
            cout << board[y][x] << endl;
        }
    }

Ini:

    for (int x = 0; x < width; x++)
    {
        cout << board[y][x];
    }
    cout << endl;
2
selbie 15 Maret 2020, 18:30