用C语言或C++编程显示分形巴恩斯利蕨

怎么在VC2010或者vc6.0的界面下用c语言或者c++语言编写出分形蕨叶(巴恩斯利蕨)... 怎么在VC2010或者vc6.0的界面下用c语言或者c++语言编写出分形蕨叶(巴恩斯利蕨) 展开
 我来答
478617
推荐于2016-08-21 · TA获得超过875个赞
知道小有建树答主
回答量:725
采纳率:100%
帮助的人:94.7万
展开全部
#include<stdio.h> 
#include<graphics.h> 
#include<conio.h> 
#include<stdlib.h> 
#include<bios.h> 
#define NUM 10
#define Min(x,y) ((x)<(y)?(x):(y)) 
#define Max(x,y) ((x)>(y)?(x):(y))


void image_draw(char finename[13],int color);

int main(void)
{
    int color;
    char filename[13];
    clrscr();
    window(20,8,60,12);
    textattr(WHITE|BLUE*16);
    clrscr();
    cprintf("\n ENTER filename:");
    cscanf("%s",filename);
    cprintf("\n Enter picture color(2~15):");
    cscanf("%d",&color);
    image_draw(filename,color);
    getch();
    exit(0);
}

void image_draw(char *filename,int color)

    int i, j, k, no_transformations, temp, xoffset, yoffset;
    int px, py, p_cum[7], flag=0, mo=1, dr=VGA;
    float a[NUM][7], f, p_sum=0, xscale, yscale;
    float newx=0, XMin=0, XMax=0, YMax=0, YMin=0, x=0, y=0;
    FILE *fin;
    char ch='-1';
    if((fin=fopen(filename,"rb"))==NULL) 
    {
        cprintf("\n File '%s' not found.",filename);
        getch();
        exit(0);
    }
    fscanf(fin,"%d",&no_transformations); 
    for(i=0;i<no_transformations;i++) 
    {
        for(j=0;j<7;j++)
        {
            fscanf(fin,"%f",&f);
            a[i][j]=f;
        }
    }
    fclose(fin); 
    initgraph(&dr,&mo,""); 
    setbkcolor(1); 

    for(i=0;i<no_transformations;i++) 
    {
        p_sum+=a[i][6];
        p_cum[i]=p_sum*32767;
    }
    while (ch!=27)
    {
        for(i=0;i<256;i++)
        {
            temp=rand();
            for(k=0;k<no_transformations-1;k++)
            {
                if(temp<p_cum[k])
                break;
            }
            newx=(a[k][0]*x+a[k][1]*y+a[k][4]);
            y=(a[k][2]*x+a[k][3]*y+a[k][5]);
            x=newx;
            if((flag==0)&&(i>15))
            {
                XMax=Max(x,XMax);XMin=Min(x,XMin);
                YMax=Max(y,YMax);YMin=Min(y,YMin);
            }
            else
            {
                px=(x*xscale+xoffset);
                py=(y*yscale+yoffset);
                if((px>=0)&&(px<639)&&(py>=0)&&(py<349))
                    putpixel(px,349-py,color);
            }

        }

        if(flag==0) 
        {
            xscale=418/(XMax-XMin);
            yscale=Min(315/(YMax-YMin),xscale/1.38);
            if(yscale<xscale/1.38);
            xscale=1.38*yscale;
            xoffset=320-(XMax+XMin)*xscale/2;
            yoffset=175-(YMax+YMin)*yscale/2;
            flag=1;
        }
        if(bioskey(1)) ch=bioskey(0);

    }

    closegraph();
}
更多追问追答
追问
其他地方看到过这个程序
追答
这个在VC6上编译通不过的,在TC上可以编译通过,但画出来的图形有点怪。。。VC6上可以把结果存在已张图里,
匿名用户
2017-07-21
展开全部
t=&n;这错了,如下:*t=n;//这里改下就好了你是要给t赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式