📄 fibonacci.cpp
字号:
#include <assert.h>
#include <iostream>
#include <string>
#include <time.h>
#include <ezwin.h>
#include <rect.h>
#define m 10
using namespace std;
float x[m]; //正方形坐标 x
float y[m]; //正方形坐标 y
float f[m]; //费氏序列
float px[m]; //圆心坐标 x
float py[m]; //圆心坐标 y
int Fibonacci(int);
void DrawRec(SimpleWindow& W,int);
void mSleep(clock_t delay);
Position ULstart(0,0);
SimpleWindow W("Fibonacci", 34.f, 20.f, ULstart);
int ApiMain()
{
//int i;
//int m;
//int Cin();
int i;
W.Open();
f[m]=0.f; //费氏序列
for(int j = 1; j <= m; j++)
{
Fibonacci(j);
}
for(i = 1; i<=m; i++)
{
x[0]=13.f; //正方形坐标 x
y[0]=10.f; //正方形坐标 y
px[m]=13.f; //圆心坐标 x
py[m]=9.5f; //圆心坐标 y
DrawRec(W,i);
mSleep(0.5*CLOCKS_PER_SEC);
}
W.Message("Click here to continue!");
return 0;
}
int ApiEnd()
{
W.Close();
return 0;
}
void DrawRec(SimpleWindow& W,int i)
{
color c;
switch (i % 4)
{
case 1:
x[i] = x[i-1] - (f[i] + f[i-1]) / 2;
y[i] = y[i-1] + (f[i] - f[i-1])/ 2;
px[i] = x[i] + f[i] / 2;
py[i] = y[i] + f[i] / 2;
c = Yellow;
break;
case 2:
x[i] = x[i-1] + (f[i] - f[i-1]) / 2;
y[i] = y[i-1] + (f[i] + f[i-1]) / 2;
px[i] = x[i] + f[i] / 2;
py[i] = y[i] - f[i] / 2;
c = Red;
break;
case 3:
x[i] = x[i-1] + (f[i] + f[i-1]) / 2;
y[i] = y[i-1] - (f[i] - f[i-1]) / 2;
px[i] = x[i] - f[i] / 2;
py[i] = y[i] - f[i] / 2;
c = Blue;
break;
default:
x[i] = x[i-1] - (f[i] - f[i-1]) / 2;
y[i] = y[i-1] - (f[i] + f[i-1]) / 2;
px[i] = x[i] - f[i] / 2;
py[i] = y[i] + f[i] / 2;
c = Green;
break;
}
RectangleShape RecShape(W, x[i],y[i], c, f[i], f[i]);
RecShape.Draw();
}
int Fibonacci(int i)
{
if(i == 1||i == 2)
{
f[1] = 1;
f[2] = 1;
return f[1],f[2];
}
else
{
f[i] = Fibonacci(i - 1) + Fibonacci(i - 2);
return f[i];
}
return 1;
}
void mSleep(clock_t delay)
{
time_t goal = clock() + delay;
while(clock() < goal);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -