我正在尝试找出如何更改显示如下的三角形:
x
xxx
xxxxx
到一个看起来像这样的人:
x
xx
xxx
xx
x
和
x
xx
xxx
xx
x
应该有一个用户输入,它将像这样改变三角形的大小:
cout << "Please enter a size for the shape: ";
cin >> size;
for (int row = 1; row <= size; ++row)
{
for (int column = 1; column <= row; ++column)
cout << '*';
cout << endl;
}
很抱歉出现任何格式错误,这对于一般编程人员还是一个新手。干杯。
答案 0 :(得分:1)
尝试将此问题分解为更简单的问题。与其考虑如何打印整个三角形,不如考虑每行的属性和图案是什么。
关于第一个tringle
x
xxx
xxxxx
您会注意到它与y轴是对称的。这样就可以打印以下两个副本:
x
xx
xxx
打印起来容易得多。
您还注意到,每行i
的组成如下:
size-i
个空格,后接i
个连续的x
,允许您打印一行,方法是先打印多个空格,然后再打印多个x
,然后再打印其他空格。
尝试以下方法,并使其适应您提到的其他情况:
int main()
{
int size = 0;
cout << "Please enter a size for the shape: ";
cin >> size;
cout << endl;
for (int row = 1; row <= size; ++row)
{
//-------first half
//spaces
for (int column = 1; column <= size-row; ++column)
cout<<" ";
//points
for (int column = 1; column <= row ; ++column)
cout << '*';
//-------second half
//points
for (int column = 1; column <= row-1 ; ++column)
cout << '*';
//spaces
for (int column = 1; column <= size-row; ++column)
cout<<" ";
cout << endl;
}
return 0;
}
答案 1 :(得分:0)
下面的代码绘制带有星星的三角形。高度是三角形的高度,长度是底部的字符数。
#include <iostream>
using namespace std;
int main()
{
const int Length = 10;
const int Height=5;
for (int i = 0; i < Height; i++)
{
for (int j = 0; j <Length/2-i; j++)
{
cout << " ";
}
int NumberOfStars=2*i+1;
for (int j = 0; j < NumberOfStars; j++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
答案 2 :(得分:0)
您应将和
*
分开输出。
以下code
可以在三种情况下工作:
#include<iostream>
int main(){
int size;
std::cout << "Please enter a size for the shape: ";
std::cin >> size;
std::cout << "case 1: " << std::endl << std::endl;
for (int row = 0; row < size; ++row) {
for (int col = 0; col < size - 1 - row; ++col)
std::cout << ' ';
for (int col = 0; col < 2 * row + 1; ++col)
std::cout << "*";
std::cout << std::endl;
}
std::cout << std::endl << "case 2: " << std::endl << std::endl;
for (int row = 0; row < size; ++row) {
for (int col = 0; col < size - 1 - row; ++col)
std::cout << ' ';
for (int col = 0; col < row + 1; ++col)
std::cout << "*";
std::cout << std::endl;
}
for (int row = 1; row < size; ++row) {
for (int col = 0; col < row; ++col)
std::cout << ' ';
for (int col = 0; col < size - row; ++col)
std::cout << "*";
std::cout << std::endl;
}
std::cout << std::endl << "case 3: " << std::endl << std::endl;
for (int row = 0; row < size; ++row) {
for (int col = 0; col < row + 1; ++col)
std::cout << "*";
std::cout << std::endl;
}
for (int row = 1; row < size; ++row) {
for (int col = 0; col < size - row; ++col)
std::cout << "*";
std::cout << std::endl;
}
return 0;
}
答案 3 :(得分:0)
以下是假设3
大小的不同类型的输出:
以下代码将显示输出:
* ** ***
for(int i = 1; i <= size; i++){
for(int j = 1; j <= i; j++)
std::cout<<"*";
std::cout<<std::endl;
}
如果要打印如下所示的三角形,请使用以下代码:
* *** *****
for(int i = 0; i < size; i++){
for(int j = size - i - 1; j > 0; j --)
std::cout<<" ";
for(int k = (i * 2) + 1; k > 0; k--)
std::cout<<"*";
std::cout<<std::endl;
}
最后按照您的要求打印输出,然后使用以下代码:
* ** *** ** * * ** *** ** *
for(int i = 1; i <= size; i++){
for(int j = size - i; j > 0; j--)
std::cout<<" ";
for(int k = 1; k <= i; k++)
std::cout<<"*";
std::cout<<std::endl;
}
for(int i = size - 1; i > 0; i--){
for(int j = size - i; j > 0; j--)
std::cout<<" ";
for(int k = 1; k <= i; k++)
std::cout<<"*";
std::cout<<std::endl;
}
std::cout<<std::endl<<std::endl;
for(int i = 1; i <= size; i++){
for(int j = 1; j <= i; j++)
std::cout<<"*";
std::cout<<std::endl;
}
for(int i = size - 1; i > 0; i--){
for(int j = 1; j <= i; j++)
std::cout<<"*";
std::cout<<std::endl;
}
希望有帮助。