آبجی
5th January 2010, 12:12 PM
شاید همه شما این برنامه رو نوشته باشید. ولی شاید در ایجاد فرمت خروجی (به شکل مثلث) با مشکل روبرو شدید. برنامه حاضر با استفاده از پروسیجرهای غیرمعمول ، سطرها و جاهای خالی مابین اعداد واقع بر مثلث را ایجاد می کند. یک برنامه کاملا آموزشی برای آنها که به خوانایی برنامه اهمیت می دهند:
کد:
PROGRAM KHAYYAM;
VAR
Pos,N,K:Integer;
FUNCTION Fact(K:Integer):LongInt; {تابع بازگشتی محاسبه فاکتوریل}
BEGIN
IF (K=۰) OR (K=۱) THEN Fact:=۱ ELSE Fact:=K*Fact(K-۱);
END;
FUNCTION Tarkib(K,I:Integer):longInt; {تابع محاسبه ترکیب}
BEGIN
Tarkib:=trunc(Fact(K)/(Fact(I)*Fact(K-I)));
END;
PROCEDURE Blank; {پروسیجر ایجاد فواصل خالی}
VAR I:Integer;
BEGIN
FOR I:=۱ TO Pos DO
Write(’ ‘);
Pos:=Pos-۳;
END;
PROCEDURE Satr(K:Integer); {پروسیجر ایجاد سطرهای مثلث}
VAR I:Integer;
BEGIN
FOR I:=۰ TO K DO
Write(Tarkib(K,I):۶);
END;
BEGIN{Of Main}
Pos:=۳۳; {قرار دادن مکان نما در وسط صفحه نمایش}
Write(’Enter Your Number: ‘); {گرفتن تعداد سطرهای مثلث از کاربر}
Readln(N);
FOR K:=۰ TO N DO
BEGIN
Blank;
Satr(K);
Writeln(”);
END;{Of For}
Readln
END.{Of Main}
کد:
PROGRAM KHAYYAM;
VAR
Pos,N,K:Integer;
FUNCTION Fact(K:Integer):LongInt; {تابع بازگشتی محاسبه فاکتوریل}
BEGIN
IF (K=۰) OR (K=۱) THEN Fact:=۱ ELSE Fact:=K*Fact(K-۱);
END;
FUNCTION Tarkib(K,I:Integer):longInt; {تابع محاسبه ترکیب}
BEGIN
Tarkib:=trunc(Fact(K)/(Fact(I)*Fact(K-I)));
END;
PROCEDURE Blank; {پروسیجر ایجاد فواصل خالی}
VAR I:Integer;
BEGIN
FOR I:=۱ TO Pos DO
Write(’ ‘);
Pos:=Pos-۳;
END;
PROCEDURE Satr(K:Integer); {پروسیجر ایجاد سطرهای مثلث}
VAR I:Integer;
BEGIN
FOR I:=۰ TO K DO
Write(Tarkib(K,I):۶);
END;
BEGIN{Of Main}
Pos:=۳۳; {قرار دادن مکان نما در وسط صفحه نمایش}
Write(’Enter Your Number: ‘); {گرفتن تعداد سطرهای مثلث از کاربر}
Readln(N);
FOR K:=۰ TO N DO
BEGIN
Blank;
Satr(K);
Writeln(”);
END;{Of For}
Readln
END.{Of Main}