מבוא למדעי המחשב בחינת מועד א', סמסטר א' תשס"ו,..006 מרצה: מתרגלת: גב' יעל כהן-סיגל. גב' ליאת לוונטל. משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות:. יש לענות על כל השאלות.. קראו היטב כל שאלה. ודאו כי אתם מבינים את השאלה לפני שתתחילו לענות עליה.. כתבו בכתב יד ברור וקריא. תשובות לא קריאות לא תיבדקנה.. הערות לתשובותיכם ניתן לכתוב בעברית, גם בגוף פונקציות C. 5. ניתן ונדרש להגדיר פונקציות עזר לפי הצורך. 6. ניתן להשתמש בכל פונקציה המופיעה במצגות ההרצאות והתרגולים ע"י הצהרה עליה בלבד (אין צורך להגדירה. כמו כן, ניתן להשתמש בפונקציות מתוך הספריות sdio.h ו-.sdlib.h לא ניתן להשתמש בפונקציות אחרות בלא להגדיר אותן במפורש. (0 נק' שאלה הגדירו פונקציה המקבלת מערך של תווים ואת גודלו ומסדרת את אברי המערך כך שבתחילתו יופיעו כל האותיות, לאחר מכן יופיעו כל הספרות ובסופו יופיעו כל שאר התווים. לדוגמא: עבור המערך s 5 = r! y 9 @ < פלט אפשרי הינו המערך s r y 5 9 =! @ < שימו לב כי קיימים פלטים אפשריים נוספים (ואין זה משנה מי מהם תחזיר הפונקציה. דרישות סיבוכיות: סיבוכיות זמן: O( סיבוכיות מקום: (O פתרונות בסיבוכיות גבוהה יותר לא יתקבלו. hp://cs.haifa.ac.il/sudes/
(0 נק' שאלה ypedef sruc cell i um; sruc cell *ex; Cell; נתונה רשימה מקושרת אשר כל תא בה מוגדר באופן הבא: באמצעות רשימה מקושרת כזו נוכל לייצג פולינום כאשר האיבר הראשון ברשימה מחזיק את המקדם של x בחזקה הגבוהה ביותר (שנסמנה, האיבר השני מחזיק את המקדם של x בחזקת - וכך הלאה. האיבר האחרון ברשימה מחזיק את המקדם של x בחזקת 0, כלומר את האיבר החופשי. x x למשל, הפולינום 5x ייוצג ע"י הרשימה: 0 - -5 0 NULL a x + a x + a x + K + a x + ax ובאופן כללי, הפולינום + a0 ייוצג ע"י הרשימה: a a a a a a0... NULL הגדירו פונקציה רקורסיבית המקבלת מצביע לתחילת רשימה מקושרת ערך הפולינום המיוצג ע"י הרשימה בנקודה x. כנ"ל ומספר x, ומחזירה את x x לדוגמא: עבור הפולינום 5x.( 5 0 (כיון ש = 0 (המיוצג ע"י הרשימה לעיל והמספר תחזיר הפונקציה רמז: a העזרו בעובדה כי a x + a x (( K ((( a x + a x + a x + a x + K 0 x + a x + K + ax + a0 = + a לדוגמא, עבור 5= מתקיים 5 a x + a x + a x + a x + a x + a = a x + a x + a x + a x + a x + (((( 5 0 5 0 a hp://cs.haifa.ac.il/sudes/
(0 נק' שאלה מטריצה מסדר נקראת מושלמת אם היא מכילה אך ורק את המספרים מספר מופיע בדיוק פעם אחת בכל שורה ובכל עמודה.,,, כך שכל היא מטריצה מושלמת אך המטריצות ו- לדוגמא: המטריצה אינן מושלמות. הגדירו פונקציה המקבלת מטריצה (כלומר, אם המטריצה מושלמת ו- 0 אחרת. מערך דו-מימדי של מספרים ואת גודלה ומחזירה דרישות סיבוכיות: סיבוכיות זמן: O סיבוכיות מקום: O( פתרונות בסיבוכיות גבוהה יותר לא יקבלו את כל הנקודות. בהצלחה! hp://cs.haifa.ac.il/sudes/
מבוא למדעי המחשב בחינת מועד א', סמסטר א' תשס"ו,..006 Soluio Number: #iclude <sdio.h> void Sor(char a[], i ; i IsLeer(char c; i IsDigi(char c; void swap(char* x, char* y; void Pri(char a[],i ; eum FALSE,TRUE; void Sor(char a[], i i i=0, /*poi o he sar of he array*/ j=-; /*poi he ed of he array*/ while(i<j /*arrage he leers*/ while(isleer(a[i] i++; while(!isleer(a[j] j--; if (i<j swap(&a[i],&a[j]; i++; j--; j = -; while(i<j /*arrage he digis ad he oher characers*/ while(isdigi(a[i] i++; while(!isdigi(a[j] j--; if(i<j swap(&a[i],&a[j]; i++; j--; reur; i IsLeer(char c if((c>='a' && c<='z' (c>='a' && c<='z' hp://cs.haifa.ac.il/sudes/
reur TRUE; reur FALSE; i IsDigi(char c if(c>='0' && c<='9' reur TRUE; reur FALSE; void swap(char* x, char* y char emp = *x; *x = *y; *y = emp; reur; void Pri(char a[],i i i; for (i=0;i<;i++ prif("%c ",a[i]; prif("\"; reur; i mai( char a[0] = 'a','','*','0','d','s','=','+','',''; prif("before: "; Pri(a,0; Sor(a,0; prif("afer: "; Pri(a,0; reur 0; 5 hp://cs.haifa.ac.il/sudes/
Number : i Poly(Cell* firs, i x saic res = 0; if(firs == NULL reur 0; res = res*x + firs->um; Poly(firs->ex,x; reur res; Number: #iclude <sdio.h> #defie N eum FALSE,TRUE; i IsPerfec(i ma[][n], i i i,j,row_arr[n+],col_arr[n+]; for(i=0; i<; i++ /*check if he values are bewee -*/ for(j=0;j<;j++ if((ma[i][j]< (ma[i][j]>n reur FALSE; for(i=0;i<;i++ for(j=0;j<=;j++ /*iiialize he arrays*/ row_arr[j] = col_arr[j] = 0; for(j=0;j<;j++ row_arr[ma[i][j]]++; col_arr[ma[j][i]]++; for(j=;j<=;j++ /*check if he i'h col ad he i'h row are perfec*/ if((row_arr[j]==0 (col_arr[j]==0 reur FALSE; reur TRUE; i mai( i ma[n][n]=,,,,,,,,,,,,,,,; i ma[n][n]=,,,,,,,,,,,,,,,; if(isperfec(ma,n prif("ma is perfec\"; if(isperfec(ma,n prif("ma is perfec\"; 6 hp://cs.haifa.ac.il/sudes/
reur 0; 7 hp://cs.haifa.ac.il/sudes/