תאריך הגשה: 17 בינואר 2006.

ההנחיות הבאות חלות על כל הפונקציות בתרגיל זה, למעט פונקצית main של כל שאלה ופונקצית sort של שאלה 2:

1.	המימוש של הפונקציה יעשה ע"י שימוש במצביעים בלבד ( אסור להגדיר משתנים מטיפוס שאינו מצביע, כמו למשל int או double ).
2.	אסור לעשות שימוש בסוגריים מרובעים.  
3.	אין לבצע קריאה לפונקציות אחרות מתוך הפונקציה ( בפרט, אסור להשתמש בפונקציות ספריה ).

שאלה 1

כתבו פונקציה כדלהלן:

void minmax(double *a,const int n,double *min,double *max);

הפונקציה minmax מקבלת מספר שלם  ומצביע a לאיבר הראשון במערך בן n איברים ( לפחות ), ומחשבת לתוך תאי הזכרון המוצבעים ע"י min ו-max את המינימום והמקסימום ( בהתאמה ) של n האיברים הראשונים במערך.

על מנת לבדוק את הפונקציה, כתבו פונקצית main הקוראת מס' שלם n ו-n מספרים ממשיים מהקלט, ומדפיסה את המספר הממשי הקטן ביותר מביניהם ואת המספר הממשי הגדול ביותר מביניהם.
ניתן להניח כי .

שאלה 2

א. כתבו שתי פונקציות כדלהלן:
double *pointer_of_max(double *a,const int n);
void sort(double *a,const int n);

הפונקציה pointer_of_max מקבלת מצביע a לתא ראשון במערך, ומחזירה מצביע לאיבר המקסימלי מבין n האיברים הראשונים במערך ( ניתן להניח כי  ).
הפונקציה sort ממיינת מערך a בן n איברים בסדר עולה, ע"י שימוש בפונקציה pointer_of_max.

על מנת לבדוק את הפונקציה sort, כתבו תוכנית הקולטת מספר שלם  ו-n מספרים ממשיים, ומדפיסה את n המספרים בסדר עולה. 

ב. נתחו את סיבוכיות זמן ריצת האלגוריתם שמימשתם.

שאלה 3

כתבו פונקציה כדלהלן:
char *my_strstr(char *s,char *t);

הפונקציה my_strstr מחזירה מצביע למופע הראשון של המחרוזת t במחרוזת s. במידה והמחרוזת t לא מופיעה כתת-מחרוזת ב-s, הפונקציה תחזיר NULL.

דוגמאות:

my_strstr(“abcxyz”,”cxy”) תחזיר מצביע לאיבר השלישי.
my_strstr(“abcxyz”,”cxyy”) תחזיר NULL.

על מנת לבדוק את הפונקציה, כתבו פונקצית main הקוראת שתי מחרוזות מהקלט ומדפיסה את תוצאות הרצת הפונקציה my_strstr.

שאלה 4

כתבו פונקציה כדלהלן:

int palindrome(char *s);

הפונקציה palindrome תחזיר 1 אם המחרוזת s היא פלינדרום. אחרת, הפונקציה תחזיר 0.

דוגמאות:

palindrome(“abcxyzyxcba”) תחזיר 1.
palindrome(“abcxyzcxyy”) תחזיר 0.

על מנת לבדוק את הפונקציה, כתבו פונקצית main הקוראת מחרוזת מהקלט ומדפיסה את תוצאות הרצת הפונקציה palindrome.

       

בהצלחה !!!