נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: יעילות ב C, ש"ב.

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
Benny Ezra
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 September 2006 בשעה 13:31 | IP רשוּם
ציטוט Benny Ezra

קיבלתי שיעורי בית בשיעור מחשבים, היה לי משימה
לכתוב תוכנית שלא ממש הבנתי איך לייעל, היו לי כמה רעיונות לכתיבת התוכנית
אך לא מצאתי רעיון שייעל לי את התוכנית.
להלן המשימה:
"למועצת התלמידים 3 מועמדים: אופיר 1, דנה - 2, וגל-3- פתח ויישם אלגוריתם הקולט עבור כל 500 תלמידי ביה"ס את מספרו של המועמד המעודף עליו, האלגוריתם יחשב לכל מועמד את מספר הנקודות שצבר ויציג את המועמדים: מקום ראשון,שני ושלישי."

הרעיון שלי היה לקלוט עם לולאת for
500 פעמים, כל פעם שכותבים 1 מעלה את המשתנה של אופיר ב-1, וכך לכל מתמודד אחר.
עכשיו זה היה קל, אבל הרעיון של הצגת הפלט היה קשה, אני כתבתי תנאים של IF
שזה יצא לי בערך 6 תנאים ו 3 else, שזה ממש לא יעיל....
האם יש דרך אחרת לעשות את זה?
חוץ מלבדוק את כל האפשרויות ?
חזרה לתחילת העמוד הצג את כרטיס החבר של Benny Ezra חפש הודעות אחרות של Benny Ezra בקר בדף הבית של Benny Ezra
 
Benny Ezra
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 September 2006 בשעה 13:39 | IP רשוּם
ציטוט Benny Ezra

קוד:
/* יוצאים מנוקדת הנחה שהקולות אינם שווים  */
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");
    }
}
חזרה לתחילת העמוד הצג את כרטיס החבר של Benny Ezra חפש הודעות אחרות של Benny Ezra בקר בדף הבית של Benny Ezra
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 13 September 2006 בשעה 15:42 | IP רשוּם
ציטוט Fate

שמעתם על מערכים?
מיון מערכים?
רשימות? מחסנית? משהו?
כל דבר רק לא 3 משתנים עם ifim ביניהם...

חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 
Benny Ezra
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 September 2006 בשעה 16:58 | IP רשוּם
ציטוט Benny Ezra

שמעתי, אתה יכול להדגים לי איך לעשות זאת עם מערכים ?
חזרה לתחילת העמוד הצג את כרטיס החבר של Benny Ezra חפש הודעות אחרות של Benny Ezra בקר בדף הבית של Benny Ezra
 
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 September 2006 בשעה 17:03 | IP רשוּם
ציטוט אורח

ואל תשכח שצריך לדעת מי זה כל אחד (אופיר וכו').
חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
zEp
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 13 September 2006 בשעה 21:28 | IP רשוּם
ציטוט zEp

קוד:
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;
}

זה הדרך הכי טובה שאני מצאתי, תקנו אותי אם אני טועה.
חזרה לתחילת העמוד הצג את כרטיס החבר של zEp חפש הודעות אחרות של zEp בקר בדף הבית של zEp
 
Benny Ezra
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 16 September 2006 בשעה 16:38 | IP רשוּם
ציטוט Benny Ezra

אפשר לראות דוגמא של אם יכול להיות והקולות לא יהיו שווים?
הכי יעילה שקיימת
לא איכפת לי אם למדנו בבית ספר או לא, אני אלמד לבד אני רוצה את זה
לידע כללי
חזרה לתחילת העמוד הצג את כרטיס החבר של Benny Ezra חפש הודעות אחרות של Benny Ezra בקר בדף הבית של Benny Ezra
 
Benny
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 16 September 2006 בשעה 17:40 | IP רשוּם
ציטוט Benny

התכוונתי דוגמא שאולי הקולות יהיו שווים ואז למשל
2. dana
2. gal
3. dana
3. gal
חזרה לתחילת העמוד הצג את כרטיס החבר של Benny חפש הודעות אחרות של Benny בקר בדף הבית של Benny
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה