עבור לתוכן

אתם יכולים לבדוק לי קטע קוד בפסקל?

Featured Replies

פורסם

זה עובד זה בטוח השאלה אם עשיתי את זה בצורה הכי יעילה שאפשר... בספר שלי רשום שזאת שאלה מבגרות אז זה חשוב לי... זאת השאלה:

נתונים שלושת המערכים F,G ו-H, כל אחד מהם באורך 30 ואיבריהם מקיימים:

F(1) =1, F(2) =1

F(n=F(n-1)+F(n-2)

עבור כל n המקיים:n>2

G(1)=1, G(2)=1, G(3)=2

G(n) = G(n-1) + G(n-2) + G(n-3)

עבור כל n המקיים: n>3

H(n) = G(n)-F(n)

עבור כל n טבעי.

יישם אלגוריתם שיבנה את שלושת המערכים, וידפיס את רשימת הערכים של n (רשימת האינדקסים) אשר עבורם H(n) הוא אי-זוגי.ף

דוגמא:

F(4)=3, G(4)=4 ולכן H(4)=1

1 הוא מספר אי זוגי ולכן המציין 4 שייך לרשימת הערכים המבוקשת.

זה הקוד שאני רשמתי:

Program Array_Bagrut;

Uses
Crt;

Const
Size = 30;

Var
H,G,F: Array[1..Size] Of Integer;
n: Integer;

Begin
ClrScr;

{F Array}
F[1] := 1;
F[2] := 1;

For n:=3 to Size do
F[n] := F[n-1]+F[n-2];

{G Array}
G[1] := 1;
G[2] := 1;
G[3] := 2;

For n:=4 to Size do
G[n] := G[n-1] + G[n-2] + G[n-3];

{H Array}
For n:=1 to Size do
H[n] := G[n] - F[n];

For n:=1 to Size do
Begin
If H[n] mod 2<>0 Then
WriteLn('n = ', n);
End;

WriteLn;
WriteLn('Press any key to quit.');
ReadKey;
End.

פורסם

כן זה הכי יעיל שיכול להיות. אם אתה רוצה לעשות שינוי קטן, שמבחינת סדר זמן ריצה הוא לא משנה, אבל מעשית הוא יכול לשנות זה לצרף את חישוב הסדרה האחרונה להדפסה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים