בודק לעבודה 2 במעבדת מידול חומרה. מריץ את הקוד שלך על עשרות ערכות של קבצי univXX.txt, משווה את הקונסולה ואת 11 קבצי הפלט למודל של ex2.exe, ובודק כל אחת מחמש הפונקציות גם לבד. מסמן מה בקוד עלול להוריד נקודות — עם מספר שורה.
הכול רץ בדפדפן שלך. הקוד והקבצים לא נשלחים לשום מקום, ולא נשמרים אצל אף אחד אחר.
טוען את הבודק…
| # | נושא | בדיקה | תוצאה | זמן |
|---|
התוכנית המלאה. הקוד שלך מתורגם בדפדפן ורץ בתיקייה וירטואלית עם קבצי univXX.txt: שתי הדוגמאות מהקורס, אקדמיה ראשונה ואחרונה, כל 100 האקדמיות, כל שלושת קודי הפסילה וכל צירוף שלהם, כל ענף של הסיכום (תיקו לראש, תיקו ל-member1, חבר יחיד בלי member2), ת.ז. עם אפסים מובילים, ומאות בחירות אקראיות. משווים את הקונסולה ואת כל 11 הקבצים, תו אחרי תו, ובודקים שלא נוצר קובץ נוסף.
כל פונקציה לבד. החתימות קבועות כדי שאפשר יהיה לקרוא לכל פונקציה בנפרד. הבודק עושה את זה: קורא ל-parseRecord עם שורה אחת ובודק כל שדה (כולל ה-'\0'), ל-loadUniversities עם מערך ריק, ל-processVotes עם univs שמולא כמו ש-readFile ממלאת, ל-writeOutputs עם שורות מוכנות ול-printSummary עם מערך קולות. כך רואים באיזו פונקציה הבעיה, גם כשהפלט הסופי נכון במקרה.
הקוד עצמו. הכללים שמביאים ל-0: חתימות, שדות המבנים, readFile ו-writeFile בלי שינוי, גישה לקבצים רק דרכן, מערכים גדולים static, בלי קבצי ביניים. בנוסף אזהרות קומפילציה, טקסט שכמעט זהה לקובץ הריצה, ומה שבודקים מעירים עליו: שמות, מספרי קסם, קוד משוכפל, הזחה, הערות שנראות כמו העתקה מ-AI.
בתוך הדף יש מודל של ex2.exe. כל כלל בו נבדק מול הקובץ האמיתי: הקוד הנמוך נרשם כשיש כמה סיבות, הפסילה לפי ת.ז. (לא לפי שם), המיון על פני כל האקדמיות, וההתנהגות המוזרה שבה אין ---------- בין "member1 יחיד" ל-"no votes for member2". המודל הושווה לקובץ האמיתי ב-163 הרצות, וכולן יצאו זהות.
university מקומי בלי static (2.5MB) יגרום ל-stack overflow, בדיוק כמו אצלכם.name[31]), מחרוזת בלי \0, מצביע לזיכרון של פונקציה שכבר חזרה, כתיבה למחרוזת קבועה, sprintf למערך קטן מדי. הריצה נעצרת עם הסבר ומספר שורה.\r\n הופך ל-\n.sizeof של מצביע.מקרים שבהם התשובה תלויה במקום הבדיקה: ב-VPL (Linux) readFile משאירה \r בסוף כל שורה של קובץ Windows; ובדיקת יחידה של processVotes מאפסת שדות שהוספת ל-university. הם מוצגים בנפרד ולא נספרים ככישלון.
הבודק לא כותב קוד ולא מציע פתרון. הוא מראה איפה הפלט שלך שונה מקובץ הריצה, ובאיזו פונקציה לחפש. את התיקון עושים לבד.