לדלג לתוכן

4.7 אלגוריתמים תרגול

תרגיל 1 - מיון מערך של מספרים שלמים

כתוב תוכנית שמגדירה מערך של 8 מספרים שלמים לא ממוינים, ממיינת אותו בעזרת qsort, ומדפיסה את המערך לפני ואחרי המיון.

דוגמה להרצה:

לפני: 42 17 8 99 3 55 21 66
אחרי: 3 8 17 21 42 55 66 99

רמזים:

  • כתוב פונקציית השוואה שמקבלת שני const void * וממירה ל-int *
  • השתמש ב-sizeof(arr) / sizeof(arr[0]) כדי לחשב את מספר האיברים

תרגיל 2 - מיון בסדר יורד

כתוב תוכנית שממיינת מערך של מספרים שלמים בסדר יורד (מהגדול לקטן) בעזרת qsort.

דוגמה להרצה:

לפני: 10 40 20 50 30
אחרי: 50 40 30 20 10

רמז:

  • שנה את פונקציית ההשוואה כך שתחזיר תוצאה הפוכה

תרגיל 3 - מיון מערך של מחרוזות

כתוב תוכנית שמגדירה מערך של 5 מחרוזות (שמות), ממיינת אותן בסדר אלפביתי בעזרת qsort, ומדפיסה את המערך אחרי המיון.

דוגמה להרצה:

לפני: Eve Alice Charlie Bob David
אחרי: Alice Bob Charlie David Eve

רמזים:

  • המערך הוא מסוג char *names[]
  • פונקציית ההשוואה מקבלת מצביעים ל-char * (כלומר char **)
  • השתמש ב-strcmp מתוך <string.h> להשוואה

תרגיל 4 - חיפוש בינארי במערך ממוין

כתוב תוכנית שמגדירה מערך ממוין של 10 מספרים שלמים, מבקשת מהמשתמש להכניס מספר לחיפוש, ומחפשת אותו בעזרת bsearch.

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

דוגמה להרצה:

המערך: 2 5 8 12 16 23 38 56 72 91
הכנס מספר לחיפוש: 23
נמצא: 23 באינדקס 5

רמזים:

  • כדי לחשב את האינדקס, חשב את ההפרש בין המצביע שחזר לבין תחילת המערך
  • אל תשכח שהמערך חייב להיות ממוין כדי ש-bsearch תעבוד

תרגיל 5 - מיון וחיפוש ביחד

כתוב תוכנית שמקבלת מהמשתמש 6 מספרים שלמים, ממיינת אותם בעזרת qsort, ואז מבקשת מספר לחיפוש ומחפשת אותו עם bsearch.

דוגמה להרצה:

הכנס 6 מספרים: 50 10 40 20 30 60
מערך ממוין: 10 20 30 40 50 60
הכנס מספר לחיפוש: 40
נמצא: 40

רמזים:

  • השתמש ב-scanf לקריאת המספרים
  • מיין קודם ורק אחר כך חפש