c ++ распечатывает массивы постепенно - PullRequest
1 голос
/ 16 декабря 2011

Я пытаюсь распечатать массивы постепенно, вот так;

TractMultBox->Text = rows[0] + newline;
TractMultBox->Text += rows[1] + rows[0] + newline;
TractMultBox->Text += rows[2] + rows[1] + rows[0] + newline;

, который выдаст такой вывод

3
43
543

Однако с этим кодом я справлюсь. Он хотел бы использовать цикл for, это облегчит задачу, поскольку я хотел бы, чтобы он выводил все массивы до тех пор, пока max не будет достигнут автоматически.

Ответы [ 3 ]

3 голосов
/ 16 декабря 2011

Я предполагаю, что вы хотите объединить, а не суммировать.

string text;
for (int i = 0; i < rows.count; ++i)
{
   text = rows[i] + text;
   TractMultBox->Text = text + newline;
}

для меньшего количества строк кода.

string text = newline;
for (int i = 0; i < rows.count; ++i)
{
   TractMultBox->Text = (text = rows[i] + text);
}

но это немного сложно прочитать.

1 голос
/ 16 декабря 2011

Звучит как работа для цикла for, возможно, что-то вроде этого:

#include <iostream>

int main()
{
    int rows[3] = {3, 4, 5};
    for (int i(0); i < 3; ++i)
    {
       for (int j(i); j >= 0; --j)
          std::cout << rows[j];
       std::cout << "\n";
    }
    std::cin.get();
    return 0;
}

Если бы строки содержали 345, это дало бы вам следующий вывод:

3
43
543

Не уверен, что это то, что вы хотели, но вы можете соответствующим образом настроить петли. Ключ должен иметь 2 для циклов.

Редактировать: Изменен автономный пример, с которым можно играть

1 голос
/ 16 декабря 2011

А как насчет двойной петли типа:

for (int i = 0; i < maxNRows; ++i)
{
    for (int j = 0; j < i; ++j)
    {
        TractMultBox->Text += rows[j];
    }
    TractMultBox->Text += newline;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...