Converting one size as opposed to two dimensional in C ++

I have a one-dimensional array of 49 spaces declared as int boardArray [49];, and I also have a 7x7 two-dimensional array declared as int boardArrayTwo [7][7]'I'm trying to use nested for loops to throw a one-dimensional array into a two-dimensional array here is the code that I use to test it.

for (int i = 0; i > 50; ++i)
{
    boardArray[i] = i; //fills the array with ints 0 - 48 to test
}
for (int x = 0; x >= 7; ++x)
{
    for (int k = 0; k >= 7; ++k)
    {
        for (int n = 0; n >= 49; ++n)
        {
            boardArrayTwo[x][k] = boardArray[n];
            cout << boardArrayTwo[x][k] << " " << endl;
        }

    }
}

I tried to run this, but nothing happens. Am I doing it wrong?

+5
source share
8 answers
for (int x = 0; x >= 7; ++x)
{
    for (int k = 0; k >= 7; ++k){
         for (int n = 0; n >= 49; ++n)
    {

it is not right. x and k should be <7 (and the third loop should not be used):

for (int x = 0; x < 7; ++x)
{
    for (int k = 0; k < 7; ++k){
        boardArrayTwo[x][k] = boardArray[7*x + k];

EDIT:

@Fabio Ceconello , - , :

for (int i = 0; i < 49; ++i)
{
    boardArray[i] = i; //fills the array with ints 0 - 48 to test
}
+6

( ), . :

boardArrayTwo[x][k] = boardArray[x * 7 + k];

EDIT: , , (7) . :

#define arrlen(x) (sizeof(x)/sizeof((x)[0]))

for (int i = 0; i < arrlen(boardArray); ++i)
{
    boardArray[i] = i; 
}
int stride = arrlen(boardArrayTwo[0]);
for (int x = 0; x < arrlen(boardArrayTwo); ++x)
{
    for (int k = 0; k < stride; ++k)
    {
        boardArrayTwo[x][k] = boardArray[stride * x + k];
        cout << boardArrayTwo[x][k] << " " << endl;
    }
}

caveat: ( ), arrlen() . ...

+5

, . .

memcpy(boardArrayTwo, boardArray, 49 * sizeof(int));

- ++:

std::copy(boardArray, boardArray + 49, reinterpret_cast<int*>(boardArrayTwo));
+5

i > 50 for. i < 49 .

, . boardArrayTwo[][] boardArray[49] - :

for (int x = 0; x < 7; ++x)
{
    for (int k = 0; k < 7; ++k)
    {
        boardArrayTwo[x][k] = boardArray[7*x + k];
        cout << boardArrayTwo[x][k] << " " << endl;
    }
}

int count = 0;

for (int x = 0; x < 7; ++x)
{
    for (int k = 0; k < 7; ++k)
    {
        boardArrayTwo[x][k] = boardArray[count];
        cout << boardArrayTwo[x][k] << " " << endl;
        count++;
    }
}
+4

, for , for , . , < >= .

-, n . x k, boardArray boardArrayTwo.

:

int n = 0;
for (int x = 0; x < 7; ++x)
    for (int k = 0; k < 7; ++k)
    {
        boardArrayTwo[x][k] = boardArray[n];
        ++n;
    }

n:

for (int x = 0; x < 7; ++x)
    for (int k = 0; k < 7; ++k)
        boardArrayTwo[x][k] = boardArray[x*7+k];

x*7+k, , x , , 7 , , x*7+k - boardArray [x][k] of boardArrayTwo/

+1

for (int i = 0; i > 50; ++i)

i 0, 50 , , .

0

( > ), (<) . , , , boardArrayTwo[x][k] 0-49 , 49 . x k, boardArray, boardArrayTwo[x][k].

, 0..7 , 8 . 7, .

#include <iostream>
using std::cout;
using std::endl;

int main () {

    int boardArray[49];
    int boardArrayTwo[7][7];

for (int i = 0; i < 50; ++i)
{
    boardArray[i] = i; //fills the array with ints 0 - 48 to test
}
for (int x = 0; x < 7; ++x)
{
    for (int k = 0; k < 7; ++k)
    {
            boardArrayTwo[x][k] = boardArray[x*7 + k];
            cout << boardArrayTwo[x][k] << " " << endl;
    }
}

}

- ( ) !

EDIT: !

0
for(int i=0; i<49; i++)
b[i]=(i+1);

int p=0;
for(int i=0;i<7;i++){
        for(int j=0;j<7;j++)
        {a[i][j]=b[p];
        p++;}
        }

,

0

All Articles