Печать чисел в столбцах c ++ - PullRequest
0 голосов
/ 09 июня 2018

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

Массив содержит {"2","1","3","16","8","3","4","1","2"}

Я хочу напечатать их в этой форме

2       16        4
1       8         1
3       3         2

Я пытался сделать это, но он печатал вот так

 2      
 1
 3
        16
        8
        3
                  4
                  1
                  2

Любая помощь?

Мой код:

std::string arr[] = {"2","1","3","16","8","3","4","1","2"};
std::string s="";
int count=0;

for (int i = 0; i <3 ; ++i) 
{
    for (count; count <(i+1)*3 ; ++count) 
    {
        for (int j = 0; j <i ; ++j) 
        {
            std::cout<<"\t";
        }
            std::cout<<arr[count]<<std::endl;
    }
}

Основная проблема в моем коде в том, что следующий столбец всегда начинается с новой строки после окончания предыдущего столбца.

1 Ответ

0 голосов
/ 09 июня 2018

Я хочу напечатать массив строк, содержащий числа, упорядоченные по столбцам.Массив содержит {"2","1","3","16","8","3","4","1","2"}

Я хочу напечатать их в этой форме

2       16        4
1       8         1
3       3         2

Для данного кода вы можете внести следующие изменения для достижения результата.

  • Найдите длину массива, используя sizeof(arr)/sizeof(*arr);.
  • Создайте цикл в соответствии с размером вашей матрицы.Это делается для перебора строк.
  • Используя второй цикл, пока не дойдет до максимальной длины массива, распечатайте каждый элемент массива.Индекс увеличивается в соответствии с размером матрицы.
  • Делайте разрыв строки после каждой печати внутреннего цикла.

PS : Использование std::stringМассив это плохая идея.Вместо этого вы можете использовать простые массивы, std::array или std::vector, так как вам нужен целочисленный массив / матрица.

См. Вывод ЗДЕСЬ

#include <iostream>
#include <iomanip>
#include <string>

int main()
{
   std::string arr[]={"2","1","3","16","8","3","4","1","2"};
   const int arrlength = sizeof(arr)/sizeof(*arr);
   const int matrixSize = 3;

   for(int row = 0; row < matrixSize; ++row)
   {
      for (int index = row; index < arrlength ; index += matrixSize)
         std::cout << arr[index] << std::setw(5);
      std::cout << "\n";
   }

  return 0;
}

Выход:

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