三视图求体积程序

(emmm。。。现在我长大了,13岁。看到当年的垃圾博客。。。woc连mardown都不会用)

(身为点击量最大的博客,今天,2019.7.3,我做了一些改进)

 

作者写这篇博客时还是个12岁的小学森。

 

有大神发现bug及时指教。我感激不尽。

 

如果要复制我的代码,给个鼓励呗~~~

 

这个程序可以实现三视图求体积,若有不同解则会求最大

 

先介绍以下俯视盖楼算法

 

如:

 

正视图:

 

1 1 1

 

1 1 1

 

1 1 1

 

左视图:

 

1 1 1

 

1 1 1

 

1 1 1

 

俯视图:

 

1 1 1

 

1 1 1 

 

1 1 1

 

先每一行取高,标在俯视图上

 

主视图:3 3 3

 

左视图:3 3 3

 

俯视图(标后):

 

1 1 1 3

 

1 1 1 3

 

1 1 1 3

 

3 3 3

 

然后每一个在中间的格子取两边最小值

 

即“盖楼”

 

俯视图(内部):

 

3 3 3

 

3 3 3

 

3 3 3

 

全部相加,求得体积27.

 

看一下代码

 

第一段:

 

//本程序采用"俯视盖楼算法" 

```cpp

#include
#include
using namespace std;
int a[16][16],xa,ya,la[16];//正视图
int b[16][16],xb,yb,lb[16];//左视图
void input(int a[16][16],int xa,int ya)
{
    for(int i=1;i<=ya;i++)
    {
        for(int j=1;j<=xa;j++)
        {
            cin>>a[i][j];
        }
    }
}
int c[16][16],xc,yc,lc[16];//俯视图

```

 

不多说,自己看

 

第二段:

void line(int a[16][16],int num[16],int x,int y)
{
    int sum=0;
    for(int i=1;i<=x;i++)
    {
        for(int j=1;j<=y;j++)
        {
            sum+=a[i][j];
        }
        num[i]=sum;
        sum=0;
    }
}

 

将一个二维的视图转换为一位的标数

 

为往后的计算打基础

 

第三段:

 

cout<<"输入长:";cin>>xa;
cout<<"输入高:";cin>>ya;
cout<<"输入主视图:"<>xb;
cout<<"输入高:";cin>>yb;
cout<<"输入左视图:"<>xc;
cout<<"输入宽:";cin>>yc;
cout<<"输入俯视图"<

 

输入。

 

第四段:

 

for(int i=1;i<=xc;i++)
{
    c[i][yc+1]=la[i];
}//正视图标数
for(int i=1;i<=yc;i++)
{
    c[xc+1][i]=lb[i];
}//左视图标数

 

两边标数在俯视图上

 

第五段:

 

for(int i=1;i<=yc;i++)
{
    for(int j=1;j<=xc;j++)
    {
        if (c[i][j]!=0)
        {
            c[i][j]=min(c[xc+1][i],c[i][yc+1]);
        }
    }
}//盖楼,即每一个格子求最小值

 

第六段:

 

int v=0;//体积
for(int i=1;i<=yc;i++)
{
    for(int j=1;j<=xc;j++)
    {
        v+=c[i][j];
    }
}
cout<<"体积最大是"<

 

累加输出返回。

 

整体代码(要复制鼓励一下我呗~):

 

#include
#include
using namespace std;
int a[16][16],xa,ya,la[16];//正视图
int b[16][16],xb,yb,lb[16];//左视图
void input(int a[16][16],int xa,int ya){
    for(int i=1;i<=ya;i++)
    {
        for(int j=1;j<=xa;j++)
        {
            cin>>a[i][j];
        }
    }
}
int c[16][16],xc,yc,lc[16];//俯视图
void line(int a[16][16],int num[16],int x,int y){
    int sum=0;
    for(int i=1;i<=x;i++)
    {
        for(int j=1;j<=y;j++)
        {
            sum+=a[i][j];
        }
        num[i]=sum;
        sum=0;
    }
}
int main()
{
    cout<<"输入长:";cin>>xa;
    cout<<"输入高:";cin>>ya;
    cout<<"输入主视图:"<>xb;
    cout<<"输入高:";cin>>yb;
    cout<<"输入左视图:"<>xc;
    cout<<"输入宽:";cin>>yc;
    cout<<"输入俯视图"<

 

刚好66行。

 

祝大家在今后的程序人生中六六大顺。

 

你可能感兴趣的:(C++语言,几何用途)