צירוף השאלה לויניי או לכל מישהו אחר שיודע....

jan777

New member
צירוף השאלה לויניי או לכל מישהו אחר שיודע....

כתבו תת תכנית המחזירה את המקום הראשון ברשימה L שבו מופיע האיבר X. אם האיבר X אינו מופיע ברשימה אזי הפעולה מחזירה את המקום סוף הרשימה.
function found(l:list_type):pos_type; var x1,x2:list_info_type; p1:pos_type; begin p1:=list_next(l,list_anchor(l)); while p1<>list_end(l) do begin list_retrive(l,p1,x2); if x1=x2 then found:=p; if x1<>x2 then list_next(l,p1); end; found:=list_end(l); end;​
והשאלה השנייה כתבו תת תכנית המקבלת שתי רשימות ומשרשרת אותן לרשימה אחת מבלי לפגוע ברשימות המקוריות כלומר, אם רשימה L1 היא 1234 ורשימה L2 היא 5678 אז הרשימה שתוחזר תהייה 12345678
procedure together(l1,l2:list_type,var l3:list_type); var x1,x2:list_info_type; p1,p2,p3:pos_type; begin list_init(l3); p1:=list_next(l1,list_anchor(l1)); p2:=list_next(l2,list_anchor(l2)); p3:=list_next(l3,list_anchor(l3)); while p1<>list_end(l1) do begin list_retrive(l1,p1,x1); list_insert(l3,p3,x1); list_next(l1,p1); end; while p2<>list_end(l2) do begin list_retrive(l2,p2,x2); list_insert(l2,p3,x2); list_next(l2,p2); end; end;​
 

vicz

New member
התוכנית הראשונה

ממליצה לך להריץ את התוכנית שכתבת ידנית, כלומר עם דף ועט. כדאי להתרגל לעשות את זה - זה יעזור לך בבחינה. בתוכנית הראשונה תמיד תחזיר את סוף הרשימה. כך רשימה בת 3 איברים שהשני בהם הוא X ותראה למה...
 

vicz

New member
למדתי פסקל לפני 6-7 שנים

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