اولا انتبه الى حالة المربع. اذا تريدين رسم مربعا, و في نفي الوقت تريدين رسم اطارا للمربع, فيجب ان تلاحظي انه لابد و ان يكون هناك فراغا بين الاطار و المربع, والا لما علمنا بالفرق.
هذا مربع بعرض 10 و بدون اطار, او ربما مربع بعرض 8 و اطار بعرض 2, لا نعلم بما هو.
كود:
***********
***********
***********
***********
***********
***********
***********
***********
***********
***********
***********
وهذا مربع بعرض 8 و اطار بعرض 1, استهلكنا مساحة نجمة و احدة لكي نرسم فراغا و يعطينا الشكل الحسن.
كود:
***********
* *
* ******** *
* ******** *
* ******** *
* ******** *
* ******** *
* ******** *
* ******** *
* *
***********
مع ان ذلك مربعا بالمعنى الرياضي, اي انه باربع اضلاع, و كل ضلع له زاوية قائمة, و جميع الاضلاع بنفس الطول, الا اننا نراه كمستطيل و لكن لا باس بذلك.
ايضا, يجب ان يكون عرض الشكل الذي نريد رسمه اقل من عرض الاطار, و الا لتقابلا و قد يخرج الشكل خارج الاطار. ايضا, يجب نلاحظ ان رسم الاطار لا يختلف عن رسم مربع عادي بكثير, عدا في حالة يكون الطول اما صفر, البداية, او edge, اي النهاية التي اختارها المستخدم. في تلك الحالتان نرسم النجوم كما نفعل مع اي مربع اّخر, اما ما بين تلك الحالتان فنرسم نجمتا حين يكون العرض صفرا, نقطة بداية الرسم على اليسار, او edge, نقطة انها الرسم على اليمين. بين تلك النقطتين نرسم فراغا:
كود PHP:
#include <stdio.h>
#include <ctype.h>
int main ()
{
int width, height;
int i, j;
width = height = 20;
for (i = 0; i <= height; i++) {
for (j = 0; j <= width; j++) {
if (i == 0 || i == height)
putchar ('*');
else {
if (j == 0 || j == width)
putchar ('*');
else
putchar (' ');
}
}
putchar ('\n');
}
}
putchar تعني نفس الشيء ك cout. هذا فقط يرسم الاطار, جربيه و عدليه كما شئت حتى تفهميه.