【问题标题】:Print numbers in columns c++在列 c++ 中打印数字
【发布时间】:2018-11-19 02:54:34
【问题描述】:

我想打印一个包含按列组织的数字的字符串数组。

数组包含 {"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;
    }
}

我的代码中的主要问题是下一列总是在上一列结束后从新行开始。

【问题讨论】:

  • 如果您发布打印数字的代码可能会有所帮助。
  • 请附上您尝试过的代码
  • 转置矩阵?
  • 数组包含 [2-1-3-16-8-3-4-1-2] -- 这不是 C++。这可能意味着任何事情。请发布实际代码,而不是一些抽象数字列表的描述。
  • 打印每隔三个数字,然后从第二个数字开始每隔三个数字,然后从第三个数字开始每隔三个数字。使用std::setw 使数字对齐。如果它在二维数组中,只需使用外部第二维的循环对其进行迭代。

标签: c++ string loops formatting


【解决方案1】:

我想打印一个包含数字的字符串数组 列。该数组包含{"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::arraystd::vector 来代替它,因为看起来您想要一个整数数组/矩阵。

查看输出HERE

#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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多