כותב |
|
Benny Ezra אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 13:31 | | IP רשוּם
|
|
|
|
קיבלתי שיעורי בית בשיעור מחשבים, היה לי משימה לכתוב תוכנית שלא ממש הבנתי איך לייעל, היו לי כמה רעיונות לכתיבת התוכנית אך לא מצאתי רעיון שייעל לי את התוכנית. להלן המשימה: "למועצת התלמידים 3 מועמדים: אופיר 1, דנה - 2, וגל-3- פתח ויישם אלגוריתם הקולט עבור כל 500 תלמידי ביה"ס את מספרו של המועמד המעודף עליו, האלגוריתם יחשב לכל מועמד את מספר הנקודות שצבר ויציג את המועמדים: מקום ראשון,שני ושלישי."
הרעיון שלי היה לקלוט עם לולאת for 500 פעמים, כל פעם שכותבים 1 מעלה את המשתנה של אופיר ב-1, וכך לכל מתמודד אחר. עכשיו זה היה קל, אבל הרעיון של הצגת הפלט היה קשה, אני כתבתי תנאים של IF שזה יצא לי בערך 6 תנאים ו 3 else, שזה ממש לא יעיל.... האם יש דרך אחרת לעשות את זה? חוץ מלבדוק את כל האפשרויות ?
|
חזרה לתחילת העמוד |
|
|
Benny Ezra אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 13:39 | | IP רשוּם
|
|
|
|
קוד:
/* יוצאים מנוקדת הנחה שהקולות אינם שווים */ if (ofir > dana && ofir > gal) { printf("1. Ofir\n"); if (dana > gal) { printf("2. Dana\n"); printf("3. Gal\n"); } else { printf("2. Gal\n"); printf("3. Dana\n"); } }
else if (dana > ofir && dana > gal) { printf("1. Dana\n"); if (ofir > gal) { printf("2. Ofir\n"); printf("3. Gal\n"); } else { printf("2. Gal\n"); printf("3. Ofir\n"); } }
else { printf("1. Gal\n"); if (ofir > dana) { printf("2. Ofir\n"); printf("3. Dana\n"); }
else { printf("2. Dana\n"); printf("3. Ofir\n"); } } |
|
|
|
חזרה לתחילת העמוד |
|
|
Fate פורומיסט על
הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת הודעות: 571
|
נשלח בתאריך: 13 September 2006 בשעה 15:42 | | IP רשוּם
|
|
|
|
שמעתם על מערכים? מיון מערכים? רשימות? מחסנית? משהו? כל דבר רק לא 3 משתנים עם ifim ביניהם...
|
חזרה לתחילת העמוד |
|
|
Benny Ezra אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 16:58 | | IP רשוּם
|
|
|
|
שמעתי, אתה יכול להדגים לי איך לעשות זאת עם מערכים ?
|
חזרה לתחילת העמוד |
|
|
אורח אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 17:03 | | IP רשוּם
|
|
|
|
ואל תשכח שצריך לדעת מי זה כל אחד (אופיר וכו').
|
חזרה לתחילת העמוד |
|
|
zEp אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 September 2006 בשעה 21:28 | | IP רשוּם
|
|
|
|
קוד:
using namespace std; int main(int argc, char* argv[]) { list<int> thelist; int ofir=0,dana=0,gal=0; int num;
do { cout << "Input number: "; cin >> num; } while (num < 1 || num > 3);
for (int i=0;i<20;i++) { if (num == 1) ofir++; else if (num == 2) dana++; else gal++; do { cout << "Input number: "; cin >> num; } while (num < 1 || num > 3); }
thelist.push_back(ofir); thelist.push_back(dana); thelist.push_back(gal); thelist.sort();
/* assuming that the votes aren't equal */ int i=1; for (list<int>::const_iterator it=thelist.begin();it != thelist.end();it++,i++) { cout << i;
if (ofir == *it) { cout << ". Ofir"; } else if (dana == *it) { cout << ". Dana"; } else { cout << ". Gal"; }
cout << endl; } return 0; } |
|
|
זה הדרך הכי טובה שאני מצאתי, תקנו אותי אם אני טועה.
|
חזרה לתחילת העמוד |
|
|
Benny Ezra אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 16 September 2006 בשעה 16:38 | | IP רשוּם
|
|
|
|
אפשר לראות דוגמא של אם יכול להיות והקולות לא יהיו שווים? הכי יעילה שקיימת לא איכפת לי אם למדנו בבית ספר או לא, אני אלמד לבד אני רוצה את זה לידע כללי
|
חזרה לתחילת העמוד |
|
|
Benny אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 16 September 2006 בשעה 17:40 | | IP רשוּם
|
|
|
|
התכוונתי דוגמא שאולי הקולות יהיו שווים ואז למשל 2. dana 2. gal 3. dana 3. gal
|
חזרה לתחילת העמוד |
|
|