posts - 8,  comments - 4,  trackbacks - 0





















 





















//Copyright (c) LeafCore
#include <windows.h>
#include 
<math.h>
#include 
<time.h>

LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
void draw(HDC);

char szClassName[ ] = "LeafCore";

int WINAPI WinMain(HINSTANCE hThisInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpszArgument,
                   
int nFunsterStil)

{
    HWND hwnd;
    MSG messages;
    WNDCLASSEX wincl;

    wincl.hInstance 
= hThisInstance;
    wincl.lpszClassName 
= szClassName;
    wincl.lpfnWndProc 
= WindowProcedure;
    wincl.style 
= CS_DBLCLKS;
    wincl.cbSize 
= sizeof (WNDCLASSEX);

    wincl.hIcon 
= LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm 
= LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor 
= LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName 
= NULL;
    wincl.cbClsExtra 
= 0;
    wincl.cbWndExtra 
= 0;
    wincl.hbrBackground
=(HBRUSH)GetStockObject(WHITE_BRUSH);

    
if (!RegisterClassEx(&wincl))
        
return 0;

    hwnd
=CreateWindowEx(
              
0,
              szClassName,
              
"LeafCore",
              WS_OVERLAPPEDWINDOW,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              
1024,
              
768,
              HWND_DESKTOP,
              NULL,
              hThisInstance,
              NULL
         );

    ShowWindow(hwnd, nFunsterStil);

    
while(GetMessage(&messages, NULL, 00)) {
        TranslateMessage(
&messages);
        DispatchMessage(
&messages);
    }

    
return messages.wParam;
}

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    HDC hdc;
    
switch (message) {
    
case WM_PAINT:
        hdc
=BeginPaint(hwnd, &ps);
        HPEN green_pen
=CreatePen(PS_SOLID, 1, RGB(01270));
        HPEN old_pen
=(HPEN) SelectObject(hdc, green_pen);

        draw(hdc);

        SelectObject(hdc, old_pen);
        DeleteObject(green_pen);
        EndPaint(hwnd, 
&ps);
        
break;
    
case WM_DESTROY:
        PostQuitMessage (
0);
        
break;
    
default:
        
return DefWindowProc (hwnd, message, wParam, lParam);
    }

    
return 0;
}

void draw(HDC hdc)
{
    
//q的数量
    const int const_q=1000;
    
double q[const_q];
    
double x, y;
    
//q中的最大数
    double greatest;
    
//q中的最小数
    double least;

    
//初始化随机数产生器
    srand(time(0));

    
//产生q
    for (int i=0; i<const_q; i++) {
        q[i]
=rand()%300+100;
    }

    
//找出q中的最大数和最小数
    greatest=q[0];
    least
=q[0];
    
for (int i=1; i<const_q; i++) {
        
if (greatest<q[i]) {
            greatest
=q[i];
        }
        
if (least>q[i]) {
            least
=q[i];
        }
    }

    
//画出代表最大数的直线
    MoveToEx(hdc, -100*4+450, (int)-greatest+6000);
    LineTo(hdc, 
100*4+450, (int)-greatest+600);

    
//画出代表最小数的直线
    MoveToEx(hdc, -100*4+450, (int)-least+6000);
    LineTo(hdc, 
100*4+450, (int)-least+600);


    
//依次画出x取-100、-99、……、-1时的点
    for (int i=-100; i<0; i++) {
        x
=i;
        y
=0;
        
for (int j=0; j<const_q; j++) {
            y
+=pow(q[j], x);
        }
        y
/=const_q;
        y
=pow(y, 1/x);
        Ellipse(hdc, (
int)x*4+450-2, (int)-y+600-2, (int)x*4+450+2, (int)-y+600+2);
    }

    
//画出x取0时的点
    y=1;
    
for (int i=0; i<const_q; i++) {
        y
*=pow(q[i], (double)1/const_q);
    }
    Ellipse(hdc, (
int)450-4, (int)-y+600-4, (int)450+4, (int)-y+600+4);


    
//依次画出x取1、2、……、99时的点
    for (int i=1; i<100; i++) {
        x
=i;
        y
=0;
        
for (int j=0; j<const_q; j++) {
            y
+=pow(q[j], x);
        }
        y
/=const_q;
        y
=pow(y, 1/x);
        Ellipse(hdc, (
int)x*4+450-2, (int)-y+600-2, (int)x*4+450+2, (int)-y+600+2);
    }
}

 

posted on 2011-07-04 21:56 leafcore 阅读(1414) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



常用链接

留言簿

文章分类(2)

交流与思索

让生活更轻松

最新评论

阅读排行榜