פורסם 2006 במאי 2419 שנים הי לכולם אני צריכה שתעזרו לי בכתיבת תוכנית בנושא פונקציות בשפת סי השאלה כך: יש חברה של אוטובוסים מנהלת טיולים לארבע אזורים שונים בארץ החברה קובעת את מחיר כרטיס הנסיעה לפי מספר הנוסעים באוטובוס באופן הבא:מספר נוסעים----מחיר כרטיס לנוסע בודדעד 20------------50בין21-30---------40מעל 31-----------30בנוסף יש עמלה נוספת שהחברה גובה כתוספת על מחיר הכרטיס באופן הבא:יעד--------------תוספת על כרטיס הנסיעה חיפה=1------------5% תוספת ת"א=2--------------30 שיקל תוספתעכו=3-----------------10%אילת=4-----------------50החברה שומרת עבור כל טיול את הנתונים: מספר טיול, מספר עיר היעד, מספר נוסעים באוטובוס.צריך לכתוב תוכנית העוזרת לחברה לקלוט נתוני הזמנות הטיולים בחודש נתון ותחשב: -העלות הכוללת לכל הטיולים ליעד מסוים שהמשתמש קובע -חישוב מספר הטיולים לכל יעד -מספר הטיול עם כמות הנוסעים המקסימלי-מספר עיר היעד בעל עלות הטיולים הכוללת המינימאליתצריך לחלק התוכנית למספר פונקציות כאשר לכל פונקציה מטלה מסוימת אחת ובסוף לכתוב פונקציה main שתשתמש בכל הפונקציות לניהול הטיולים.ותודה רבה מראש
פורסם 2006 במאי 2519 שנים קודם תגדירי את המבנה נתונים שלך. הוא מוגדר?ד.א. זה כבר כמה תראדים שאנשים(כמוני) פונים אליך בלשון זכר. לי זה מציק!
פורסם 2006 במאי 2519 שנים השדות שאת צריכה לשמור עבור כל טיול:החברה שומרת עבור כל טיול את הנתונים: מספר טיול, מספר עיר היעד, מספר נוסעים באוטובוס.את צריכה לחשוב על מבנה הנתונים שיתאים לך ביותר: אוסף, וקטור, תור או מחסנית(קיימים עוד, אך אלו העיקריים). בנוסף, את צריכה לממש את מבנה הנתונים.
פורסם 2006 במאי 2619 שנים תנסי אולי מפה ...http://staff.netvision.net.il/~yuvalba/yairba/classes.html
פורסם 2006 במאי 2619 שנים כדי לכתוב פונ את צריכה להצהיר עליה(למעט מקרים חריגים), לממש אותה, ולקרוא לה. ההצהרה על הפונ תעשה בדרך כלל לפני הMAIN, והיא תכיל את שם הפונ, הערך המוחזר והפרמטרים בצורה הבאה: return_value function_name(paramtype1 paramname 1, paramtype2, paramname 2[, ....]); שימי לב שבסוף השורה חייב לבוא נקודה פסיק(. אם את מעוניינת שהפונ לא תחזיר ערך, תשימי בRETURN_VALUE את המילה השמורה VOID. אחרת הRETURN_VALUE אמור להיות כל סוג של משתנה, לדוגמא INT, CHAR או DOUBLE. PARAMTYPE1 הוא הסוג של המשתנה הראשון(INT CHAR וכו) וPARAMNAME1 הוא השם של המשתנה הראשון(יכול להיות כל שם תקני שתבחרי - כזה שלא מתחיל במספר וכו החוקים האלה). function_name זה שם הפונ(גם כאן את לא יכולה לבחור שם שמתחיל במספר או בתו מיוחד..). בעצם, הגדרת הפונ דומה מאוד להצהרה על משתנה בתחילת הבלוק. השוני היחידי הוא הסוגריים, שבתוכם את רושמת את המשתנים שלך. אם את מעוניינת שהפונ לא תחזיר ערך, את צריכה להשאיר את הסוגריים ריקים () או לשים בתוכם void כך: (void). ד.א. גם בMAIN ניתן לשים VOID. לא חייבים להצהיר על פונ. את יכולה לשים את המימוש שלה(שיוסבר בהמשך) לפני הMAIN. הבעיה בשיטה הזו היא שאת לא יכולה לקרוא לפונ שהוגדרו לאחר המימוש, או לפונ אחרות שמומשו באותה צורה אחרי הפונ הזו(גם לפני הMAIN). לא מומלץ לעשות זאת. המימוש יופיע כך: return_value function_name(paramtype1 paramname 1, paramtype2, paramname 2[, ....]){//...//some things//....} שימי לב שהשורה הראשונה במימוש היא בידיוק אותו הדבר כמו ההצהרה, חוץ מהנקודה פסיק שבסוף. במימוש אסור לך לשים נקודה פסיק בסוף השורה הראשונה. הסוגריים המסולסלים מסמנים את בלוק הקוד של הפונ. כל הפקודות שאת מעוניינת לרשום בפונ חייבות לבוא ביניהם, אחרת תקבלי שגיאה. ניתן לשים בלוק אחר בתוך הבלוק של הפונ(כמו לולאת FOR, WHILE או כמו IF). הקריאה לפונ תעשה בצורה הבאה: function_name(paramval1, paramval2[, ....]); בPARAMVAL1 ו2 את שמה את ערך הפרמטרים שאת מעוניינת לשלוח לפונ, לדוגמא: "hello world", 3, 20.3. 'a', שמות משתנים(ואז ערכם ישלח),ביטויים(כגון: 3+4, 3*9 וכו), ערכים שפונ אחרת החזירה(fun1(fun2(20)); אם הגדרת שהפונ צריכה להחזיר ערך, את חייבת להחזיר ערך ע"י RETURN val; כאשר VAL זה הערך שאת מחזירה. הוא יכול להיות ביטוי, ערך קבוע, ערך מוחזר של פונ אחרת וכו. את הערך שהפונ החזירה, את מקבלת ע"י הסימן שווה(כאילו את שמה במשתנה אחד ערך של משתנה אחר): a = fun(2); דוגמאות לפונ שונות ומשונות את יכולה לראות בתראד הקודם ששאלת בו. אם יש לך שאלות נוספות תשאלי.
פורסם 2006 במאי 3019 שנים בהנחה שאת שומרת את הטיולים במערך:typedef struct trip{ int id; int passes; int dest;}TRIP;int getPrice(TRIP t){ int tmp; int dest=t.dest, passes=t.passes; if(passes<=20) tmp=50; else if(passes<=30) tmp=40; else tmp=30; switch(dest) { case 1: tmp*=1.05; break; case 2: tmp+=30; break; case 3: tmp*=1.1; break; case 4: tmp=50; }}int getPriceToCity(TRIP *t, int maxt, int dest){ int i; int sum=0; for(i=0;i<maxt;i++) if(t[i].dest=dest) sum+=getPrice(t[i]);}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.