- (問 4.3.5)ダイアモンドパターンを描画するプログラムを書け。
解答例:
void __fastcall TForm1::FormPaint(TObject *Sender)
{
int n=12;
int i;
for(i=1; i<=n; i++) {
double theta1=2*M_PI*i/n;
int x1 = (int)(100*(1+cos(theta1)));
int y1 = (int)(100*(1+sin(theta1)));
int j;
for(j=0; j<i; j++) {
double theta2=2*M_PI*j/n;
int x2 = (int)(100*(1+cos(theta2)));
int y2 = (int)(100*(1+sin(theta2)));
Canvas->MoveTo(x1, y1);
Canvas->LineTo(x2, y2);
}
}
}
- (問 4.3.6)色のグラデーション(2次元)を作成するプログラムを書け。
解答例:
void __fastcall TForm1::FormPaint(TObject *Sender)
{
int i, j;
for(i=0; i<64; i++) {
for(j=0; j<64; j++) {
Canvas->Brush->Color = RGB(i*4, 128, j*4);
Canvas->Pen->Color = RGB(i*4, 128, j*4);
Canvas->Rectangle(i*4, j*4, i*4+4, j*4+4);
}
}
}
- (問 4.3.10)閏年を判定する関数 int leapyear(int y)を書け。
解答例:
int leapyear(int y) {
if (y%4==0 && !(y%100==0) || y%400 == 0) {
return 1;
} else {
return 0;
}
}
(参考:
int leapyear(int y) {
return y%4==0 && !(y%100==0) || y%400 == 0;
}
でも良い。)