在C++中尝试基于用户确定的宽度打印钻石

Trying to Print a Diamond Based on User-Determined Width in C++

本文关键字:钻石 打印 用户 C++ 于用户      更新时间:2023-10-16

我正在学习C++期中入门,其中一个复习问题是尝试使用嵌套循环打印实心菱形。用户确定最宽的一行有多宽,以及钻石是由什么字符制成的。我知道已经有人问过很多类似的问题,但这个问题与我能找到的任何例子都不同,我不理解这些例子,而且我似乎无法很好地理解菱形的逻辑,无法将其应用于嵌套循环。所以,我想我会来这里。

我和一位导师一起工作,我们想出了以下代码:

for (x = 1; x <= width; x += 2)
{
string wSpace;
string charSpace;
cout << wSpace.assign(row, '#');
cout << charSpace.assign(x, character) << endl;
row--;
}

变量CCD_ 1是由用户输入的大于3的正整数。此代码生成菱形的上半部分和最宽的一行。

这个代码唯一的问题是我不知道发生了什么。他使用了.assign()函数,但我不明白我读到的关于它是什么或它是如何工作的。它在这里是如何运作的,它在做什么?我觉得如果我知道.assign()的作用,我会更好地理解这个代码和问题。

根据文档,您将使用fill(5)。正如文档中所说,这个版本的assign()Replaces the current value by n consecutive copies of character c.在这种情况下,n将是xrow,字符将是characterwidth0。因此,在第一种用法中,您说wSpace现在是一个重复row次的'#'字符串,而在第二种情况中,您认为charSpace现在是character字符串,重复x次。