打印一个递减数字表

时间:2015-05-27 10:42:55

标签: c++

我想编写一个打印如下表格的代码:

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

我写了一个代码来打印如上所述的表格,但它只打印5个。 我知道我必须使用条件来打印这样的表格。打印它的条件是什么?

int main () {
int  number = 5;

for (int i = 0; i < 9; i++) {
    for (int j = 0; j < 9; j++) {
        if (condition)
            ...
        else
            cout << number << " ";
    }
    cout << endl;
}
return 0;
}

2 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,您想要打印的是Chebyshev distance到中心+1。我不知道什么条件可以使你的代码工作,但我会使用一个简单的公式来计算每个值:

#include <iostream>
using namespace std;

int main() {
    for (int i=0;i<9;i++){
        for (int j=0;j<9;j++){
            cout << std::max(abs(i-4),abs(j-4)) +1 << " " ;
        }
        cout << endl;
    }
}

答案 1 :(得分:-3)

    /*To make boxes and inside box and so on
    #include<stdio.h>
    #include<conio.h>
    #include<iostream.h>
    void main()
    {
    int a[100][100],n,i,j,k=0,l;
    clrscr();
    cout<<"Enter the outside  No. n \n";
    //like for your answer it is 5;
    //i and j are loop element for 2D array
    //k is used for making n boxes
    cin>>n;
    l=n;
    n=2*n-1;
    while(k<n)
    {
        if(k%2==0)
        {
        for(i=k;i<n-k;i++)
        {
            a[0+k][i]=l;
            a[i][0+k]=l;
            a[n-1-k][i]=l;
            a[i][n-1-k]=l;
        }
        k++;l--;
        }
        else
        {
        for(i=k;i<n-k;i++)
        {
            a[0+k][i]=l;
            a[i][0+k]=l;
            a[n-1-k][i]=l;
            a[i][n-1-k]=l;
        }
        k++;l--;
        }
    }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                cout << a[i][j];
                if(a[i][j]>9)
                cout<<" ";
                else
                cout<<"  ";
            }
        cout<<endl;
        }

    getch();
    }