还有其他方法吗?如果这段代码的部分可以正常工作,但是有什么方法可以使用setw()正确组织(*)?
void showTheater(char theater[][20],int row,int seat)
{
cout << "Seats: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19" << endl;
for (int i = 0; i <= row; i++)
{
for (int j = 0; j <= seat; j++)
{
if (j == 0) {
cout << "Row " << i;
}
else if (i < 10) {
cout << setw(3) << theater[row][seat];
}
else {
cout <<" " << theater[row][seat]<<" ";
}
}
cout << "\n";
}
}
如果不写则输出:
Seats: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Row 0 * * * * * * * * * * * * * * * * * * * * Row 1 * * * * * * * * * * * * * * * * * * * * Row 2 * * * * * * * * * * * * * * * * * * * * Row 3 * * * * * * * * * * * * * * * * * * * * Row 4 * * * * * * * * * * * * * * * * * * * * Row 5 * * * * * * * * * * * * * * * * * * * * Row 6 * * * * * * * * * * * * * * * * * * * * Row 7 * * * * * * * * * * * * * * * * * * * * Row 8 * * * * * * * * * * * * * * * * * * * * Row 9 * * * * * * * * * * * * * * * * * * * * Row 10 * * * * * * * * * * * * * * * * * * * * Row 11 * * * * * * * * * * * * * * * * * * * * Row 12 * * * * * * * * * * * * * * * * * * * * Row 13 * * * * * * * * * * * * * * * * * * * * Row 14 * * * * * * * * * * * * * * * * * * * * Row 15 * * * * * * * * * * * * * * * * * * * *
带有if部分的输出:
Seats: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Row 0 * * * * * * * * * * * * * * * * * * * * Row 1 * * * * * * * * * * * * * * * * * * * * Row 2 * * * * * * * * * * * * * * * * * * * * Row 3 * * * * * * * * * * * * * * * * * * * * Row 4 * * * * * * * * * * * * * * * * * * * * Row 5 * * * * * * * * * * * * * * * * * * * * Row 6 * * * * * * * * * * * * * * * * * * * * Row 7 * * * * * * * * * * * * * * * * * * * * Row 8 * * * * * * * * * * * * * * * * * * * * Row 9 * * * * * * * * * * * * * * * * * * * * Row 10 * * * * * * * * * * * * * * * * * * * * Row 11 * * * * * * * * * * * * * * * * * * * * Row 12 * * * * * * * * * * * * * * * * * * * * Row 13 * * * * * * * * * * * * * * * * * * * * Row 14 * * * * * * * * * * * * * * * * * * * * Row 15 * * * * * * * * * * * * * * * * * * * *
答案 0 :(得分:1)
关键是对行的索引使用std::setw
(与std::left
结合使用)。这是代码。请注意,现在星星也与标题对齐。在发布的代码中,theater
的索引也有错误。
void showTheater(char theater[][20], int row, int seat) {
std::vector<int> Seats (seat);
for (int i = 0; i < seat; i++) Seats[i] = i;
std::cout << "Seats:";
for (int i = 0; i < seat; i++) std::cout << std::setw(3) << Seats[i] << " ";
std::cout << "\n";
for (int i = 0; i < row; i++) {
std::cout << "Row " << std::setw(2) << std::left << i << " ";
for (int j = 0; j < seat; j++) {
std::cout << " " << theater[i][i] << " ";
}
std::cout << "\n";
}
}
编辑:我刚刚发现HolyBlackCat已经提到对准星星的方法。抱歉。至少我还对齐了标题,并取消了用于打印字符的无用setw
。