שלום לכולם,

מורני !

New member
שלום לכולם,

אני חדשה כאן ולא ממש יודעת אם אני במקום הנכון.. אני פותרת תרגיל בפסקל וקצת מתקשה, במידה ואני במקום הנכון - זה התרגיל: בבית ספר יצאה שכבה ט, המונה 3 כיתות, לטיול. קלט: מספר התלמידים בכל כיתה. פלט: המספר הכולל של האוטובוסים שי להזמין לכל השכבה, כאשר בכל אוטובוס ניתן להכניס עד 40 תלמידים. התשובה שלי היא:
program p74tar8; uses WinCrt; var class1, class2, class3: integer; sum, num_bus: integer; begin Writeln('enter three class'); readln (class1, class2, class3); sum:= class1+class2+class3; if sum mod 40 = 0 then num_bus:= sum div 40 +1 end.​
אני יודעת שחסר לי else ובכל, הסיום של התוכנית, אבל לא מצליחה להבין מה חסר. אני אשמח לעזרה, תודה רבה.
 

DNile

New member
תנסי לתאר מילולית את מה שהתוכנית

שלך עושה. 1: קולטת ככה וככה. 2: מחשבת עבור הקלט את הסכום 3: באם הסכום מתחלק ב40 אז... 4: אם הסכום לא מתחלק ב40 אז...
 
אם הבנתי נכון את השאלה והתכנת אז

הכל נראה בסדר פה רק חסר המצב שכמות התלמידים היא בדיוק כפולה של 40 ואז מספר האוטובוסים ללא ה 1+. משהו כזה:
if sum mod 40 = 0 then num_bus:= sum div 40 +1 else num_bus := sum div 40;​
 

מורני !

New member
הינה התוצאה

begin Writeln('enter three class'); readln (class1, class2, class3); sum:= class1+class2+class3; if sum mod 40 > 0 then num_bus:= sum div 40 +1 else num_bus:= sum div 40; writeln ('num_bus=', num_bus); end.​
הייתי צריכה לעשות גדול, ולא שווה ל-0. תודה רבה.
 

DNile

New member
אגב, טריק קטן -

אפשר לוותר לחלוטין על הif, אם תעשי num_bus := sum + 39 div 40. אם sum מתחלק בדיוק ב40, אז להוסיף לו 39 לא ישנה את התוצאה של הDIV. אם sum לא מתחלק בדיוק ב40, אז להוסיף לו 39 יגדיל את תוצאת הפעולה של הDIV באחד.
 
למעלה