问题描述: 给定宽为X, 高为Y的矩形纸, 要在纸上画M个点, 要求这些点分布均匀.
算法描述: 将这张纸划分成N个区域, N>=M, 在这个N个区域的中心画点, 直到画满M个即可.
要点难点: 注意纸张的尺寸, 即X和Y的比值X/Y, 对于不同的比值, 区域有不同的划分方法.
还需注意每个点的坐标的求法.
程序实现: 以下是程序执行截图及C++代码, 使用C++ Builder 6 IDE编译链接.
窗体左边较大的黑色方框表示纸张的最大尺寸, 天蓝色区域表示实际的纸张大小.
红色小圆点表示所画的点, 虚线表示它的邻域.
- //---------------------------------------------------------------------------
- #ifndef Unit1H
- #define Unit1H
- //---------------------------------------------------------------------------
- #include <Classes.hpp>
- #include <Controls.hpp>
- #include <StdCtrls.hpp>
- #include <Forms.hpp>
- #include <ExtCtrls.hpp>
- //---------------------------------------------------------------------------
- class TForm1 : public TForm
- {
- __published: // IDE-managed Components
- TButton *btnDraw;
- TEdit *txtCount;
- TPaintBox *pbox;
- T