Отображение 2d Array loop - PullRequest
1 голос
/ 03 марта 2012

У меня есть этот исключительный пример, чтобы создать два массива, например:

arrayA[2][3];
arrayB[2][3];

и третий массив для хранения результата 1 [2] [3] + 2 [2] [3].Мне нужно использовать двойной цикл и двойной цикл только для перебора элементов в массивах, вычисления суммы каждого компонента и сохранения ее в третьем массиве.Наконец, я должен вывести третью сумму массивов.

Программа должна выглядеть следующим образом:

A =
-5 2 8
1 0 0 

B =
1 0 2
0 3 -6  

A + B =
-4 2 10
1 3 -6

Однако я не могу заставить ее работать с двумя массивами в цикле double forтолько не более того.Вот что я сделал.Я только зашел так далеко, и когда я пытаюсь добавить еще один массив в «цикл j», все портится.Возможно ли это сделать только с двойным циклом без использования функций и тому подобного (я только должен использовать циклы и логические условия в этой главе):

int matrixA[2][3] = 
{
    {-5, 2, 8}, 
    {1, 0, 0}
};

int matrixB[2][3] =
{
    {1, 0, 2}, 
    {0, 3, -6}
};

int matrixC[2][3];

for (int i = 0; i < 2; ++i)
{
    for (int j = 0; j < 3; ++j)
    {   
        cout << matrixA[i][j] << " ";
    }
    cout << endl;
}

Как я уже сказал, это работает нормально, еслиЯ либо отображаю только один массив данных, либо использую больше циклов, но мне нужно использовать только двойной цикл for и ничего больше.Кроме того, я не знаю, как получить еще один пробел между 1 0 0 и B = и как добавить A =, B = и A + B = в этом цикле.

РЕДАКТИРОВАТЬ: @Niklas, спасибо за ответ, но я действительно не понимаю, как «подготовить» вывод.В соответствии с моим заданием мне нужно использовать, и я цитирую текст «двойной цикл for для итерации по элементам матрицы, вычисления суммы каждого компонента и сохранения результата в третьей матрице. Наконец, выводим сумму матрицы."Также добавим это в OP.

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Из того, что я могу собрать, ваша главная цель - сложить вместе две матрицы (представленные двумерными массивами) и сохранить результат в matrixC, а также вывести его.Кажется, вы на правильном пути, для этого требуется лишь небольшая модификация.

Следующее изменение вашего кода должно помочь (используются только 2 для циклов):

for (int i = 0; i < 2; ++i)
{
    for (int j = 0; j < 3; ++j)
    {   
        matrixC[i][j] = matrixA[i][j] + matrixB[i][j];
        cout << matrixC[i][j] << " ";
    }
    cout << endl;
}

Это должно добавить соответствующие ячейки matrixA и matrixB вместе и сохранить результат в matrixC.Это также будет выведено.


РЕДАКТИРОВАТЬ: В свете новой информации (ваш комментарий под этим ответом), кажется, вам нужно вывести более одной из этих матриц, но все еще только с двумя for циклами.Решение простое: создайте функцию, которая выводит матрицу, и используйте ее всякий раз, когда вам нужно вывести ее:
void outputMatrix( int mtx[2][3] )
{
    for (int i = 0; i < 2; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {   
            cout << mtx[i][j] << " ";
        }
        cout << endl;
    }
}

Теперь, если вам нужно вывести matrixA, тогда matrixB затем matrixC,просто сделайте это:

outputMatrix( matrixA );
outputMatrix( matrixB );
outputMatrix( matrixC );

Этот код не является действительно общим, поскольку он опирается на фиксированный размер массива 2x3.Но я пытаюсь сделать все проще для вас.


EDIT2: Решение без функций:

Создать 3 std::stringstream s, по одному для каждогоматрица.Вместо того, чтобы выводить все сразу, мы будем буферизовать каждый выход матрицы отдельно, а затем выводить каждый последовательно.

std::stringstream mtxAOut, mtxBOut, mtxCOut;
for (int i = 0; i < 2; ++i)
{
    for (int j = 0; j < 3; ++j)
    {   
        matrixC[i][j] = matrixA[i][j] + matrixB[i][j];
        mtxAOut << matrixA[i][j] << " ";
        mtxBOut << matrixB[i][j] << " ";
        mtxCOut << matrixC[i][j] << " ";
    }
    mtxAOut << endl;
    mtxBOut << endl;
    mtxCOut << endl;
}
// Now output...
cout << mtxAOut.str() << endl << mtxBOut.str() << endl << mtxCOut.str();

Я не знаю, что вы узнали или нет, есть много способов приблизитьсяэта проблема, и ваш инструктор, вероятно, лучше подойдет для совета здесь, особенно если вы должны использовать конкретную технику.

0 голосов
/ 03 марта 2012

Сделайте, как решение Alex Z для расчета и отображения, и, как это звучит как домашнее задание, выполните в коде следующее:

Подготовьте вывод заранее для каждой матрицы и распечатайте его после завершения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...