עבור לתוכן

למי שעדיין ער - צריך את עזרתכם בבדיקת תוכניות שלי.

Featured Replies

פורסם

אני צריך את התשובה עד הבוקר, אז אם יש מישהו שיכול לבדוק את התרגיל ולתת לי תשובה כמה שיותר מהר אני אשמח.

התוכנות של הפסקל במחשב שלי לא עובדות( dev pascal ו turbo pascl) לא יודע למה ואין לי זמן לבדוק למה.

אני צריך שתאשרו לי האם הפתרונות שכתבתי נכונים:

1) כתוב פונקציה רקורסיבית המקבלת מערך וגודל המערך ומחזירה את האיבר הגדול במערך.

הפתרון שלי:

function f(a:vec; n:integer);
begin
if n=1 then
f:=a[n]
else
if a[n]>f(a,n-1) then
  f:=a[n];
end;

2) כתוב פונקציה רקורסיבית המקבלת מערך, גודל המערך ומספר נוסף, ומחזירה כמה אברים במערך גדולים מהמספר הנוסף.

הפתרון:

function f(a:vec; n,x:integer);
begin
if n=1 then
if a[n]>x then
  f:=1
else
  f:=0
else
if a[n]>x then
  f:=1+f(a,n-1,x)
else
  f:=0+f(a,n-1,x);
end;

תודה.

נ.ב

ל-2 עשיתי טבלת מעקב ויצא לי בסדר, בקשר ל-1 אני לא בטוח אם הכתיבה נכונה.

פורסם

בהנחה שב PASCAL המערכים מתחילים ב 1 (כבר לא זוכר)...

בכל מקרה, בתוכנית 1 יש לך בעיה, F לא תמיד יחזיר ערך (ב IF השני אם A[N] קטן/שווה מ F).. תכניס את התוצאה של F(A,N-1) למשתנה, ותבדוק מולו ותחזיר אותו אם צריך..

ארכיון

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

דיונים חדשים