繁体   English   中英

如何在C ++中制作矩形和三角形

[英]How do you make a rectangle and triangle shape in C++

当我输入“ 245”的int时,如何实现这种格式:

(如果它是奇数,它将是一个矩形,偶数将是三角形)

 1
 1 2

 1 
 1 2
 1 2 3
 1 2 3 4

 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5

到目前为止,这是我的代码:

(我似乎无法同时输出三角形和矩形)

int n;
int lastDigit;

do
{
    cout << "Enter a positive integer: ";
    cin >> n;

}while ( n <= 1 || n == '0');

cout << endl;

// If even digit - tri
do
{
    lastDigit = n%10;

    if (lastDigit / 2 ==0)
    {
        for (int i = 1; i <= lastDigit; ++i)
            for (int tri = 1; tri <= i; ++tri)
                cout << "\t" << tri;

        cout << endl;
    }

    // if odd digit - rect
    else if (lastDigit / 2 != 0)
    {
        for (int i = 1; i <= lastDigit; i++)
        {
            for (int rect = 1; rect <= i; rect++)
                cout << "\t" << rect;

            cout << endl;
        }
        n = n/10;
    }

    cout << endl;

}while (lastDigit != 0);

n = n/10;
cout << endl;

return 0;

并且,当我键入int时,我应该如何编码,编译器将提取第一个数字(从左到右)并进行相应输出?

任何帮助,将不胜感激!

以下是完整的代码。

步骤1 :接受用户输入,并检查其是否为奇数或偶数。

第二步 :如果是奇数,则执行三角形否则为矩形。

#include<iostream>
int main () {

int n;

cout<<"Enter number: ";
cin>>n;

if (n % 2 != 0)
{
    for(int i = 1; i <= n; i++)
    {
        cout<<endl;
        for(int j = 1; j <= n; j++)
        {
            cout<<j<<" ";
        }
    }
}
else
{
    for(int i = 1; i <= n; i++)
    {
        cout<<endl;
        for(int j = 1; j <= i; j++)
        {
            cout<<j<<" ";
        }
    }
}

return 0; 
}

两种打印方式都相似。 我建议:

#include<iostream>

using namespace std;

int main () {

    int n;

    cout << "Enter number: ";
    cin >> n;

    int i = 1;
    int& rowLim = ((n % 2) ? n : i);

    for(i = 1; i <= n; i++)
    {
        cout << endl;
        for(int j = 1; j <= rowLim; j++)
        {
            cout<<j<<" ";
        }
    }

    return 0; 

}

最简单的办法是使用一个string ,迭代charchar和输出相应。 例如

#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;
    for (char c : s) {
        int n = c - '0';
        bool k = n % 2;
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= (k ? n : i); ++j)
                cout << " " << j;
            cout << endl;
        }
        cout << endl;
    }
    return 0; 
}

输出量

 1
 1 2

 1
 1 2
 1 2 3
 1 2 3 4

 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5
 1 2 3 4 5

查看演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM