צריכה עזרה ב-c

Blase

New member
צריכה עזרה ב-c

בטקס בחירת מלכת יופי במדינת קולורדו משתתפות, 50 מועמדות. בתחרו משתתפים 10 שופטים. כל שופט בוחר 3 מועמדות בסדר עדיפות עולה, ורושם את התוצאות משמאל לימין, מארגני הטקס מקבלים סדרה של שלשות מספרים מ10 שופטים ונותנים באופן הבא- מועמדת למקום הראשון (משמאל) מקבל 3 נקודות, מועמדת למקום השני מקבלת2 נקודות, והשלישית מקבלת נקודה 1. דוגמא לבחירה של שופט: 6,50,20 (מועמדת מס' 6-מקום ראשון מקבלת 3 נקודות, מועמדת מס' חמישים- מקום שני, מקבלת 2 נקודות, ומועמדת מספר 20- מקום שלישי, מקבלת נקודה אחת.) לכל מועמדת יש מספר סידורי מ1 עד 50. יש לפתח תוכנית בשלבים, המקבלת כקלט את- תוצאות השיפוט, ומציגה כפלט את 3 המקומות הראשונים בתחרות, וכמה נקודות קיבלה כל זוכה (מבין השלוש). עכשיו אין לי מושג איך אני מחפשת את שלושת המקומות הראשונים...אני יודעת רק איך את המקום הראשון אשמ להצעות..
 
אם לא יפריע לך... נצל"ש קטן וממש מפגר...

פשוט... פעם ראשונה שאני מתשמשת בשפת סי, אני לא מצליחה לעשות נקודה פסיק... שזה מוזר לגמרי, כי בכל תוכנה אחרת אותו כפתור כן עושה לי ; מה העניין? =\ סליחה על הפיגור. ;[
 

maverick 42

New member
רעיון לפתרון

אפשר פשוט ליצור מערך מ 1 עד 50, המייצג את הניקוד של כל דוגמנית (המיקום במערך הוא מס' הדוגמנית), וכאשר מתקבל ניקוד פשוט להעלות את הערכים בתוך המערך בהתאם (למשל: דוגמנית מס' 32 קיבלה 3 נקודות - אז A[32] = A[32] + 3), ובסוף לחפש את שלושת הערכים הגדולים ביותר ולהחזיר את מיקומם במערך. על מנת לייעל, ניתן גם ליצור מערך נוסף בגודל 3, כאשר כל תא מכיל 2 נתונים - מס' דוגמנית וניקוד. בזמן הוספת נקודות לדוגמניות, דואגים לשמור בתוך המערך את שלושת התוצאות הגבוהות ביותר, וכך בעצם חוסכים את החיפוש בסוף.
 

בליעל

New member
כמה קוי מחשבה

שאלה שיכולה לסבך את העניין היא האם צריך לכסות את המקרים שיש תיקו (שוויון נקודות בין המקום הראשון לשני \ השני לשלישי \ כל שלושת המקומות). רעיון נוסף: אם את יודעת איך למצוא את המועמדת הזוכה, תחזיקי את הציונים במערך של signed int, כאשר האינדקס הוא מספר המועמדת. תכתבי שגרה שמחזירה את האינדקס של המועמדת הזוכה. תקראי לשגרה, ותקבלי את האינדקס של הזוכה. תכתבי במקום שלה בטבלת הציונים מספר שלילי. ותקראי לשגרה פעם נוספת - הפעם תקבלי את המועמדת השנייה, כי הזוכה עברה אל תחתית הטבלה. וכנ"ל למועמדת השלישית. קו מחשבה שני: תחזיקי מערך שכל איבר בו מחזיר שני איברים (struct שמכיל שני int), או אפילו שני מערכים של int. תמייני לפי הציון, ותדפיסי את מספרי המועמדות הראשונות.
 
למעלה