עבר עריכה לאחרונה בתאריך 08.06.03 בשעה 23:38
שאלה 10בטקס בחירת מלכת יופי במדינת קולרדו משתתפים 50 מועמדות.בתחרות משתתפים 10 שופטים.כל שופט בוחר 3 מועמדות בסדר עדיפות עולה ורושם את התוצאות משמאל לימין.מארגני הטקס מקבלים סדרת של שלשות מספרים מעשרה שופטים ונותנים ניקוד באופו הבא: מועמדת למקום הראשון(משמאל) מקבלת 3 נקודות,מועמדת למקום השני מקבלת 2 נקודות ומועמדת למקום השלישי מקבלת נקודה אחת.דוגמה לבחירה של שופט :6,50,20 (מועמדת מספר 6 (מקום ראשון) מקבלת 3 נקודות מועמדת מס 50 (מקום שני) מקבלת 2 נקודות ומועמדת מספר 20(מקום שלישי מקבלת נקודה אחת).(לכל מועמדת יש מספר סידורי 1-50)
יש לפתח תוכנית בשלבים המקבלת כקלט את תוצאות השיפוט ומציג כפלט את שלושת המקומות הראשוניים שזכו בתחרות וכמה נקודות קיבלה כל זוכה.
הערה: תתיחסו כל הזמן ב array כאילו יש לוסוגרים מרובעים..כי יש בעיה בפורום..
תשובה:
program havetodoit; const max=4; mid=2; type moamd_type= array of integer; softem= record nikodone: integer; nikodtwo: integer; nikodthree: integer; end; sofet_type=array of softem; var mar_sofet2: sofet_type; mar1: moamd_type;procedure details_in(var mar_sofet: sofet_type); var i: integer; begin for i:= 1 to mid do begin writeln ('sofet put the first nikud'); readln (mar_sofet.nikodone); writeln ('sofet put the second nikud'); readln (mar_sofet.nikodtwo); writeln ('sofet put the seconde nikud'); readln (mar_sofet.nikodthree); end; end;{procedure details_in} procedure sidor(mar_sofet: sofet_type; var mar2:moamd_type); var i, j: integer; begin for j:= 1 to max do for i:= 1 to mid do begin if mar_sofet.nikodone= j then mar2:= mar2+3; if mar_sofet.nikodtwo= j then mar2:= mar2+2; if mar_sofet.nikodthree= j then mar2:= mar2+1; end; end;{procedure sidor} function dafirst(mar2: moamd_type): integer; var i,place,big: integer; begin big:=mar2; place:=1; for i:= 2 to max do if mar2>big then begin big:= mar2; place:=i; end; writeln ('the first place is',' ',place,' ',' and she have',' ',big, ' ','points'); dafirst:=place; end; {function dafirst} function dasecond(mar2: moamd_type): integer; var i,big,place: integer; begin big:= mar2; place:=1; for i:= 2 to max do if (mar2> big) and (i<> dafirst(mar2)) then begin big:= mar2; place:=i; end; writeln ('the second place is',' ',place,' ',' and she have',' ',big, ' ','points'); dasecond:= place; end;{function daseconde} function dathird(mar2: moamd_type): integer; var i,big,place: integer; begin big:= mar2; place:=1; for i:= 2 to max do if (mar2> big) and (i<> dafirst(mar2)) and (i<> dasecond(mar2)) then begin big:= mar2; place:=i; end; writeln ('the third place is',' ',place,' ',' and she have',' ',big, ' ','points'); dathird:= place; end;{function dathird} begin{program} details_in(mar_sofet2); sidor (mar_sofet2, mar1); dafirst (mar1); dasecond (mar1); dathird (mar1); end.
|