ABA


"צריך עזרה ב c"
גירסת הדפסה        
קבוצות דיון לימודים, מדע ותרבות נושא #11484 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11484
alex1122 
חבר מתאריך 30.8.07
1159 הודעות, דרג אמינות חבר זה
   15:10   16.04.12   
אל הפורום  
  צריך עזרה ב c  
 
   4. בחנות ממתקים מוכרים סוכריות בחבילות. יש חבילות של 6 סוכריות בחבילה, של 9 סוכריות בחבילה ושל 20 סוכריות בחבילה. יש לכתוב תוכנית הקולטת מהמשתמש את מספר הסוכריות המבוקש ומדפיסה כמה חבילות מכל סוג הוא צריך לקנות. אם לא ניתן להגיע בדיוק לערך המבוקש, יש להדפיס הודעה ולהציע עיסקה המגיעה למספר הקרוב ביותר האפשרי.
לדוגמה: אם המשתמש מבקש 15, יש להציג: 15 = 1*6 + 1*9
אם המשתמש מבקש 16 יש להודיע שזה לא ניתן ולהדפיס 18 = 2*9

בתום הפעולה יש לאפשר למשתמש להכניס עוד ערך או לצאת מהתוכנית.

אני כל היום מנסה ולא מצליח.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תשתמש בDiv ו mod TheKid 16.04.12 18:28 1
  מכתב איציק2 16.04.12 18:34 2
  נשמע כמו לי משהו קלאסי לרקורסיה TYSON  16.04.12 18:52 3
  אין לי זמן לשבת על זה עכשיו dyermaker  17.04.12 19:19 4
  אלגוריתם כללי בC++ TheKid 18.04.12 18:42 5
     הבעיה שזה לא אמור להיות רקורסיה או פויינטרים alex1122  19.04.12 08:13 6
         עדיין צריך עזרה? ldan192  25.04.12 09:30 7

       
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק, 2 נקודות
   18:28   16.04.12   
אל הפורום  
  1. תשתמש בDiv ו mod  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות, דרג אמינות חבר זה
   18:34   16.04.12   
אל הפורום  
  2. מכתב  
בתגובה להודעה מספר 0
 
   לגבי הסוף של התכנית, זה צריך להיות בלולאת WHILE אינסופית (כלומר !0), ולתת שאלה בסוף, אם המשתמש מכניס 1 להמשיך אחרת לעשות BREAK ללולאה.

לגבי השאר, אם יש לך משהו שקטן מ20, בטוח שהוא לא ישתמש בחבילה של 20, אם יש לך משהו שקטן מ9 הוא בטוח לא ישתמש בחבילה של 9, תתחיל לשחק עם זה עם משפטי תנאי ולולאות FOR.

תתחיל מהקטן לגדול, אם הוא קטן ממש מ6, אין אפשרות, אם שווה ל6 תחזיר 6, אם הוא בין 6 ל9 תחזיר את הערך הביניים, הכוונה מה שקרוב יותר ל6 או ל9 (עם ההודעת שגיאה המתאימה) וכך הלאה עד ל20.
אם עברת את ה20 אתה יכול להכניס לולאה למשפט תנאי שאם משהו גדול ממש מ20, שיבדוק מה קורה אם אתה מוריד 9, מה קורה אם אתה מוריד 20 ומה קורה אם אתה מוריד 6.
יש איזו חוקיות שם פשוט צריך לעלות עליה, אני מקווה שעזרתי לך קצת כי לכתוב לך קוד אני לא יעשה כרגע לפחות..
תגיד אם אתה צריך עוד משו..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TYSON 
חבר מתאריך 17.9.08
8384 הודעות, דרג אמינות חבר זה
   18:52   16.04.12   
אל הפורום  
  3. נשמע כמו לי משהו קלאסי לרקורסיה  
בתגובה להודעה מספר 0
 
   לקחת את הסכום ואז לשלוח לעצמו פעמיים
פעם שהסכום פחות 6 ופעם שהסכום פחות 9
ככה שישלח לעצמו כמה שצריך שיגיע לכל הקוצבינציות
כמובן שלפני הכל אתה שם תנאי עצירה
אם הסכום שלילי return 0
אם יצא שהסכום שווה = 0, return 1
ואז איכשהו צריך לדחוף שם בחזרה את ההדפסה של החישוב


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dyermaker 
חבר מתאריך 4.2.03
1644 הודעות, דרג אמינות חבר זה
   19:19   17.04.12   
אל הפורום  
  4. אין לי זמן לשבת על זה עכשיו  
בתגובה להודעה מספר 0
 
   אם זה עדיין רלוונטי לך למחר תגיד לי ואכתוב לך פתרון

אגב אני מניח שכבר למדת רקורסיה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק, 2 נקודות
   18:42   18.04.12   
אל הפורום  
  5. אלגוריתם כללי בC++  
בתגובה להודעה מספר 0
 
  

vector<int> getsum(vector<int> ma, int num){
vector<int> vec1,vec2;
int sum1,sum2;
if (num<=0) return ma;
vec1=getsum(ma,num-6);
vec2=getsum(ma,num-9);
sum1=num-accumulate(vec1.begin(), vec1.end(), 0)-6;
sum2=num-accumulate(vec2.begin(), vec2.end(), 0)-9;

if (sum1>sum2)
{
ma=vec1;
ma.push_back(6);
}
else
{
ma=vec2;
ma.push_back(9);
}
return ma;
}


כמו שיצא לי להכיר אותך בטח לא תקרא...
אבל אם תקרא אז
vector זה סה"כ צורה אחרת למערך
כלומר בC אתה תצטרך להעבי רמצביע למערך
כאשר הפעולה Push_back מכניסה איבר חדש למערך
accumulate
סה"כ סוכמת את איברי המערך
את הפונקציה הרקורסיבית הזו תצטרך לעטוף בפונקציית קלט ופלט שתציג את הפלט כמו שתרצה
זה די פשוט את הקלט ע"י לולאת WHILE אינסופית, ובסוף סכימת איברי המערך ששווים ל6 וסכימת איברי המערך ששווים ל9 והצגה כמו שביקשו


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
alex1122 
חבר מתאריך 30.8.07
1159 הודעות, דרג אמינות חבר זה
   08:13   19.04.12   
אל הפורום  
  6. הבעיה שזה לא אמור להיות רקורסיה או פויינטרים  
בתגובה להודעה מספר 5
 
   אני עושה קורס חוזר וזה סהכ אמור להיות פונקציות ולולאותתבלי מערכים
תודה בכל מקרה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   09:30   25.04.12   
אל הפורום  
  7. עדיין צריך עזרה?  
בתגובה להודעה מספר 6
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net