תכנות מתקדם בשפת C חוברת תרגילים - 1 -

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "תכנות מתקדם בשפת C חוברת תרגילים - 1 -"

Transcript

1 תכנות מתקדם בשפת C חוברת תרגילים - 1 -

2 קלט פלט. MaxMult MaxMult שאלה א. כתבו תוכנית המדפיסה לוח כפל בגודל 10 ב. כתבו תוכנית המקבלת מספר,,MaxMult ומדפיסה לוח כפל בגודל לדוגמא עבור: MaxMult=4 יודפס: הנחיות לשני הסעיפים ההדפסות צריכות להיות בצורת טבלה ועל כל שדה בטבלה להיות מיושר לימין (כך שבכל טור ספרת האחדות תהיינה אחת מעל השנייה, ספרת העשרות תהיינה אחת מעל השנייה, וכך הלאה עבור כל הספרות) הקפידו לא להכניס רווחים מיותרים (לפני המספר שבפינה הימנית תחתונה צריך להופיע רווח אחד בדיוק). שאלה 2 כתבו את הפונקציה: void printformattedintegers(char* format, char* numbers) הפונקציה מקבלת כקלט מחרוזת,,format המכילה פורמט להדפסה של מספרים וכן מחרוזת,,numbers המכילה מספרים שלמים בבסיס דצימלי מופרדים במספר כלשהו של רווחים לבנים. על הפונקציה להדפיס את המספרים מהמחרוזת,numbers בהתאם לתווי ההסבה שב- format. כך שתו ההסבה הראשון ב- formatיקבע כיצד ייוצג המספר הראשון ב- numbers, תו ההסבה השני יקבע כיצד ייוצג המספר השני וכך הלאה (בדומה ל- printf ). מחרוזת הפורמט יכולה להכיל את תווי ההסבה הבאים (כמו ב- :(printf d% ממיר int לטקסט המכיל ייצוג עשרוני של המספר x% ממיר int לטקסט המכיל ייצוג הקסהדצימלי (בסיס 16) של המספר o% ממיר int לטקסט המכיל ייצוג אוקטלי (בסיס 8) של המספר וכן מחרוזת הפורמט יכולה להכיל את תווי ההסבה הבאים אשר אינם חוקיים ב- :printf b% ממיר int לטקסט המכיל ייצוג בינארי (בסיס 2) של המספר r% ממיר int לטקסט המכיל ייצוג רומי של המספר כמו כן מחרוזת הפורמט יכולה להכיל תווים שאינם תווי הסבה, אשר מודפסים כמו שהם

3 דוגמאות: הקריאה: printformattedintegers("dec: %d Hex: %x Roman: %r"," ") תגרום להדפסת הפלט: Dec: 123 Hex: A Roman: IX הקריאה: printformattedintegers("%b in Binary is %o in Octal","18 18") תגרום להדפסת הפלט: in Binary is 22 in Octal הנחיות: 1. היעזרו בוויקיפדיה כדי למצוא את התיאור המלא של שיטת הספירה הרומית: חפשו את הערך:"ספרות רומיות" 2. הניחו כי הקלט לפונקציה תקין, כלומר הניחו כי המחרוזת numbers אכן מכילה מספרים שלמים מיוצגים בבסיס 10 ומופרדים ברווח לבן וכי format מכיל מחרוזת פורמט חוקית וכן שמספר תווי ההסבה במחרוזת הפורמט מתאים למספר המספרים שהתקבלו במחרוזת.numbers 3. השתמשו ככל הניתן בפונקציות הקלט/פלט שנלמדו בשיעור printf,scanf,sscanf,sprintf וכו'. 4. ניתן להיעזר בפונקציה strtok (חפשו תיעוד המסביר כיצד להשתמש בה) אך בהחלט ניתן להסתדר גם בלעדיה. 5. הגדירו פונקציות עזר וחלקו את הבעיה לתת בעיות

4 מצביעים והקצאות דינאמיות שאלה 1 א. כתבו את הפונקציה: int** pointersort(int* arr, unsigned int size, char ascend_flag); הפונקציה מקבלת כקלט מערך של מספרים שלמים,,arr את גודלו, sizeודגל, ascend_flagאשר אם ערכו שונה מאפס המיון הוא עולה, אחרת המיון יהיה יורד. על הפונקציה להחזיר מערך של מצביעים, כך שהמצביעים במערך יצביעו על איברי arr בצורה ממוינת על-פי.ascend_flag כלומר, אם ascend_flag=1 המצביע בתא ה- 0 של המערך המוחזר מצביע לאיבר המינימלי. הערה: ממשו את המיון בשיטת.merge-sort arr = לדוגמא: אם המערך arr הוא אז המערך המוחזר יהיה: ב. כתבו גרסא נוספת לפונקציה. הפעם כותרת הפונקציה תהיה: void pointersort(int* arr, unsigned int size, char ascend_flag, int*** pointers); הפונקציה מקבלת מערך של מספרים שלמים,,arr גודלו, size ודגל, ascend_flag אשר אם ערכו שונה מאפס המיון הוא עולה, אחרת המיון יהיה יורד. הפעם על הפונקציה להחזיר כפרמטר פלט את מערך המצביעים. שאלה 2 בהינתן פולינום עם מקדמים שלמים מהצורה: n C X + C X C X + C n n 1 1 n כל איבר בפולינום נקרא מונום. נגדיר רשומה לייצוג מונום כנ"ל באופן הבא: typedef struct monom{ המקדם// coefficient; int החזקה // power; int }Monom; מבנה הנתונים לייצוג פולינומים: מערך של רשומות מטיפוס,Monom המקיים: המערך לא יכיל מונום שמקדמו 0. המונומים במערך יופיעו בסדר חזקות יורד ממש (כלומר המונום עם החזקה הגדולה ביותר יופיע בתא הראשון במערך). כתבו תוכנית הקולטת מהמשתמש שני פולינומים, ומדפיסה את פולינום הסכום שלהם ואת פולינום המכפלה שלהם, כל אחד בשורה נפרדת. הערות: 1. כל פולינום בקלט יהיה שורה באורך לא ידוע של זוגות (מקדם וחזקה). כך למשל השורה: x + 7x 5x מייצגת את הפולינום: 8 2. הדפסת פולינום צריכה להיות בסדר חזקות יורד, ללא מקדמים שהם

5 יש להדפיס: - 8 5x.8x^4 + 7x^ x + 7x 5x למשל את הפולינום: 8 שאלה 3 כתוב תוכנית הקולטת שורות טקסט מהמשתמש ואוגרת אותן במערך של מחרוזות. התוכנית תקלוט בהתחלה מספר הקובע את גודל המאגר, ולאחר מכן תקלוט שורות אותן תכניס למאגר. במידה והמאגר מתמלא, יש "לזרוק" את השורה הותיקה ביותר. בנוסף לתחזוקה של מבנה הנתונים המתואר לעיל, על התוכנית לאפשר למשתמש לשחזר שורות מתוך המאגר. פקודות השחזור ניתנות כאן: משחזרת את השורה האחרונה שהוכנסה למאגר.!! משחזרת את שורה מספר n. במידה ואין כזו - תודפס הודעת שגיאה. n! (מספרי השורות ניתנים באופן רציף מתחילת התוכנית ועד סיומה) משחזרת את מספר השורה האחרונה. L!.str משחזרת מהמאגר את השורה האחרונה שלא הופיעה בה המחרוזת!~str במידה ואין כזו, תודפס הודעת שגיאה. במידה משחזרת מהמאגר את השורה האחרונה שהתחילה במחרוזת.str!str ואין כזו, תודפס הודעת שגיאה. מדפיסה את תוכן המאגר. כל שורה תופיע אחרי מספר השורה. (מספרי השורות ניתנים באופן רציף מתחילת התוכנית ועד סיומה)!print יציאה.!quit שחזור שורה פירושו להדפיס את השורה המשוחזרת. אם השחזור הצליח, יש להכניס למאגר את השורה המשוחזרת כולה. אחרת, אין להכניס דבר למאגר. דוגמת הרצה (הקלט מהמשתמש מופיע בפונט מודגשונטוי והפלט שהתוכנית מדפיסה מופיע בפונט רגיל) Please enter the history storage size > 5 The storage size was set to 5 > some text > some more text > and more text >!2 some more text > hello world >!! hello world >!! hello world >!2 Could not restore line number 2, currently lines 3-7 are in the storage >!print 3. and more text 4. some more text 5. hello world 6. hello world 7. hello world >!~hello some more text >!some some more text >!L Number of last line is 9-5 -

6 >!quit Thanks for using the history application, bye bye הערות 1. לא ניתן להניח אורך שורה מקסימאלי 2. ניתן להניח כי כל שורה שאינה פקודת שחזור תתחיל באות אנגלית 3. פתרון יעיל הוא פתרון אשר פעולת הכנסה למאגר תתבצע בזמן (1)O שאלה 4 כתוב פונקציה המקבלת שני פרמטרים שהם שתי מחרוזות. הפונקציה מכפילה במחרוזת הראשונה את כל התווים המופיעים במחרוזת השנייה. הפונקציה מחזירה מחרוזת חדשה המכילה את הרצף שלאחר ההכפלה. לדוגמא: ( l strrepתשנה ("hello world", את המחרוזת הראשונה ל hellllo worlld" אם הפונקציה הופעלה בשנית, עם פרמטר ראשון שהוא המחרוזת הריקה ("" או,(NULL יש לבצע את ההכפלה על תוצאת ההפעלה הקודמת של הפונקציה. לדוגמא: "or") strrepתשנה (NULL, את המחרוזת הראשונה ל helllloo woorrlld" - 6 -

7 רשימות מקושרות שאלה 1 נתונים המבנים הבאים לייצוג רשימה מקושרת של תווים: typedef struct list_node { char* dataptr; struct list_node* next; }ListNode; typedef struct list { ListNode* head; ListNode* tail; }List; נתונה רשימה מקושרת שנתוניה הם ספרות, ואותיות אנגליות קטנות בלבד. הרשימה המקושרת במקורה הכילה את המידע הבא על תלמיד: שמו הפרטי של התלמיד (המופיע באותיות קטנות) אות אחר אות ברשימה, ואחריו מופיע ציונו הממוצע (הניתן בספרות המייצגות מספר חיובי שלם) סיפרה אחר סיפרה ברשימה. לרוע המזל, כתוצאה מבאג במחשב, נשזרו התווים אלו באלו, והתקבלה רשימה מעורבלת. דוגמה: רשימה שבמקור הכילה את התווים mully94 כאשר m היה הנתון בצומת הראשון, u היה הנתון בצומת השני, וכ"ו (כלומר שמו הפרטי הוא,mully וציונו 94), שונתה וכעת היא מכילה את התווים: m9ul4ly (כאשר m הוא הנתון בצומת הראשון, 9 הוא הנתון בצומת השני, וכ"ו). שימו לב כי סדר התווים והספרות המקורי נשמר בתוך הערבול. (לדוגמא, u יבוא אחרי l m, יבוא אחרי u, וכו'). כתבו פונקציה המקבלת רשימה מעורבלת ומחזירה מבנה לייצוג תלמיד (שיוגדר להלן) המכיל את שמו הפרטי ואת ציונו הממוצע של התלמיד המתקבלים מהפרדת המילים ברשימה המעורבלת. Student unscramble (List lst); ה prototype של הפונקציה הוא: כאשר מבנה של תלמיד מוגדר להלן: השדה והשדה typedef struct student { List first; int grade; } Student; firstהוא רשימה המייצגת את שמו הפרטי של הסטודנט אות אחר אות. gradeהוא מספר המייצג את ממוצע ציוניו של הסטודנט. אין להשתמש בהקצאה דינאמית, אלא לשנות מצביעים ברשימת הקלט. הערות: - 7 -

8 שאלה 2 נתונה ההגדרה הבאה לייצוג רשימה מקושרת של מספרים שלמים: typedef struct listnode{ int* dataptr; struct listnode* next; }ListNode; typedef struct list { ListNode* head; ListNode* tail; }List; List merge(list lst1, List lst2); כתבו את הפונקציה הבאה, בארבע גרסאות: הפונקציה מקבלת כקלט lst1 ו- lst2, שתי רשימות מקושרות ממוינות בסדר יורד של ערכים עליהם מצביעים השדות.dataPtr על הפונקציה למזג את שתי הרשימות לרשימה ממוינת אחת המכילה את כל האיברים של רשימות הקלט. על הפונקציה להחזיר את הרשימה הממוזגת. א. ב. ג. בגרסא זו, הפונקציה איננה רקורסיבית ועליה ליצור רשימה חדשה. הפונקציה לא תשנה הצבעות ברשימות lst1 ו- lst2 (בסוף ריצת הפונקציה שתי הרשימות נותרות ללא שינוי). בגרסא זו, הפונקציה איננה רקורסיבית ועליה למזג את שתי הרשימות לרשימה אחת ממוינת ע"י שינוי מצביעים בלבד (ללא שימוש בהקצאות חדשות). בגרסא זו, הפונקציה רקורסיבית ועליה ליצור רשימה חדשה. ד. בגרסא זו, הפונקציה רקורסיבית ועליה למזג את שתי הרשימות ע"י שינוי מצביעים. הערה: בסעיפים ג' ו- ד' הפונקציה אינה חייבת להיות רקורסיבית בעצמה, היא יכולה להיות פונקציה העוטפת פונקציה רקורסיבית (פונקציה אשר מפעילה לפונקציה רקורסיבית)

9 שאלה 3 נתונה ההגדרה הבאה לייצוג רשימה מקושרת של מספרים שלמים: typedef struct listnode{ int* dataptr; struct listnode* next; struct listnode* prev; } ListNode; typedef struct list { char sgn; ListNode* head; ListNode* tail; } List; ניתן לייצג מספר שלם גדול בעזרת הסימן שלו ורשימה של ספרותיו לפי הסדר כאשר הצומת הראשון ברשימה מכיל מצביע לספרה הימנית והצומת האחרון מכיל מצביע לספרה השמאלית. למשל את המספר 197 נייצג ברשימה: א. כתבו את הפונקציה: num); void printnumber(list שמקבלת מספר המיוצג ברשימה כפי שתואר, ומדפיסה אותו. (הפונקציה יכולה להיות רקורסיבית או איטרטיבית לפי בחירתכם). יש להדפיס את הסימן בין אם המספר חיובי ובין אם הוא שלילי. ב. כתבו את הפונקציה: void subtractnumbers(list n1, List n2, List* result); שמקבלת 2 רשימות שמייצגות שני מספרים ומצביע לרשימה שלישית ומעדכנת את resultלהצביע על רשימה השלישית המייצגת את הפרש המספרים n1. - n2 ג. כתבו את הפונקציה: mod); void modnumbers(list n1, List n2, List* שמקבלת 2 רשימות שמייצגות שני מספרים ומצביע לרשימה שלישית, ומעדכנת את modלהצביע על רשימה השלישית המייצגת את שארית החלוקה בין שני המספרים. הערה: בסעיפים ב' ו- ג' אין להשתמש באלגוריתם הממיר את המספרים המיוצגים ברשימות למשתנים מטיפוס int או double ולבצע את החיבור והכפל עליהם (גישה כזו מחמיצה את המטרה של ייצוג המספרים ברשימה). מה גם שבהחלט ייתכן והמספר לא ניתן כלל לייצוג שכזה בגלל אורכו

10 שאלה 4 מעוניינים לשמור נתונים על נקודות במישור ששיעורי הקורדינטות שלהן הם מספרים שלמים. על-מנת לחסוך במקום הציעו לשמור את הנקודות במבנה הבא: המבנה לעיל שומר את הנקודות: (5,3), (5,8), (7,4), (9,-4), (9,9), (9,9) שימו לב, שנקודה יכולה להופיע יותר מפעם אחת. החיסכון בא לידי ביטוי בכך שהקורדינטה X נשמרת פעם אחת בלבד עבור אוסף נקודות אשר להן שיעור קורדינטה X זהה ואשר נבדלות רק בערכי הקורדינטה Y. שימו לב כי המבנה הנ"ל עושה שימוש בשני סוגים שונים של רשימות אשר כל אחת מהן ממויינת. typedef struct XlistNode{ } XListNode; typedef struct YlistNode{ } YListNode; typedef struct Ylist { } YList; typedef struct list { } List; א. כתבו את הפונקציה unsigned int getpairoccurrences(list coord_list, int x, int y); אשר סופרת ומחזירה כמה פעמים מופיעה הנקודה (x,y) ב- coord_list. ב. כתבו את הפונקציה unsigned int getyoccurrences(list coord_list, int y); אשר סופרת ומחזירה כמה נקודות (y,*) נמצאות ב- coord_list. כלומר כאלו אשר שיעור הקורדינטה Y שלהן שווה לפרמטר y

11 ג. כתבו את הפונקציה unsigned int getxoccurrences(list coord_list, int x); אשר סופרת ומחזירה כמה קורדינטות (*,x) נמצאות ב- coord_list. כלומר כאלו אשר שיעור הקורדינטה X שלהן שווה לפרמטר x. ד. כתבו את הפונקציה int insertcoordinate(list *coord_list, int x, int y); אשר מוסיפה ל- coord_list את הנקודה.(x,y) אם הנקודה נמצאת כבר, הפונקציה תחזיר 1, אחרת הפונקציה תחזיר 0. בכל מקרה, הפונקציה תוסיף את הנקודה. ה. כתבו את הפונקציה int removecoordinate(list *coord_list, int x, int y); אשר מוחקת מ- coord_list את הנקודה.(x,y) אם הנקודה מופיעה יותר מפעם אחת ב-,coord_list יש למחוק רק את אחד המופעים. במקרה וזו הנקודה היחידה עם שיעור ה- X שצויין, יש למחוק גם את התא המתאים ברשימת שיעורי קורדינטות ה- X. לדוגמא, לאחר הפעלת removecoordinate( &coord_list, 7, 4); על המבנה שבעמוד הקודם, יתקבל המבנה על הפונקציה removecoordinate להחזיר את אחד מהערכים הבאים: אם הנקודה לא נמצאה, הפונקציה תחזיר 1, אם יש מופע נוסף לנקודה, הפונקציה תחזיר 2, אם זו הייתה הקורדינטה היחידה עם השיעור X שצויין, הפונקציה תחזיר 3, בכל מקרה אחר, הפונקציה תחזיר

12 עצים בינאריים שאלה 1 נתונות ההגדרות הבאות עבור עץ בינארי של מספרים: typedef struct treenode { int data; struct treenode *left; struct treenode *right; }TreeNode; typedef struct tree { TreeNode *root; }Tree; כתבו את הפונקציה : int HowMany (Tree tr) הפונקציה מקבלת כפרמטר עץ,,tr ומחזירה את מספר תתי העצים עבורם מתקיים התנאי הבא: מספר האברים החיוביים בתת העץ (כולל השורש) מהווה לפחות מחצית מכל האיברים בתת העץ. (הערה: עלה שהנתון בו הינו חיובי נכלל בספירה). לדוגמא, בעץ שלהלן ישנם 6 צמתים, כלומר 6 תתי עץ. 3 מתוכם (האיברים שמכילים את 12, את 3 ואת 5) מקיימים את התכונה, והפונקציה שתקבל את העץ הזה כפרמטר תחזיר

13 שאלה 2 פעמים רבות הקומפיילר בונה עץ ביטוי לצורך חישוב ביטוי חשבוני שמופיע בקוד. לשם הפשטות, נניח שבביטוי שלנו יופיעו רק מספרים חד ספרתיים (אופרנדים) ופעולות חשבוניות (בינריות) בסיסיות (אופרטורים) חיבור, חיסור, כפל, חילוק ומודולו. ( ) ( (3 + 7) * 9) ( (2 + 5) * (8 / 2)) נניח שסביב כל אופרטור ושני האופרנדים עליהם הוא פועל מופיעים סוגריים. למשל: נגדיר עץ ביטוי באופן הבא: צומת בעץ יכול להכיל אופרטור או אופרנד. צומת עם בנים יכיל אופרטור אותו יש להפעיל על הביטויים המיוצגים ע"י תת העץ השמאלי ותת העץ הימני. עלים יכילו אופרנדים. דוגמאות: (4+5) ((3 + 7) * 9)

14 ( (2 + 5 ) * (8 / 2) ) כתבו תכנית הקולטת מהמשתמש מחרוזת המכילה ביטוי לפי ההגדרות בשאלה, בונה עץ ביטוי ומחשבת את ערך הביטוי תוך שימוש בעץ. על התכנית להציג הודעת שגיאה אם המחרוזת אינה ביטוי תקין. המחרוזת אינה תקינה אם אינה כתובה בהתאם לכללים שנכתבו לעיל. כלומר, הכוונה היא לטעויות שניתן לגלות בזמן קומפילציה ולא בזמן ריצה. לדוגמא, סוגריים לא תקינים היא טעות זמן קומפילציה אולם חלוקה באפס היא טעות זמן ריצה מכיוון שהיא עלולה להתגלות רק אחרי שבוצע חישוב על תת-עץ מסויים (ולכן אותה אין צורך לבדוק)

15 שאלה 3 נתונים המבנים הבאים עבור עץ בינארי ועבור רשימה מקושרת: typedef struct listnode { int data; struct listnode* next; } ListNode; typedef struct list { ListNode* head; ListNode* tail; } List; typedef struct treenode { int data; struct treenode* parent; struct treenode* left; struct treenode* right; } TreeNode; typedef struct tree{ TreeNode* root; /*רשימה מקושרת של כל העלים בעץ */ leaflist; List } Tree; #define LEFT 0 #define RIGHT 1 Tree AddNode (Tree *tr, TreeNode *p, int branchselect, int data); כתבו את הפונקציה הבאה: הפונקציה מקבלת עץ בינרי,tr צומת בעץ הבינרי p, נתון חדש data אותו יש להכניס לעץ מתחת ל p. הצד אליו יכנס הנתון החדש יקבע בהתאם לערך שיופיע ב.branchSelect שימו לב שבמבנה העץ מופיעה גם רשימה מקושרת של עלים. הרשימה צריכה להיות מעודכנת ונכונה לאחר כל הוספה של איבר לעץ

16 דוגמא לעץ כזה: 1 לשם ההבהרה, אם נקבל בקשה להכניס את המספר 16 בצד שמאל של העלה המכיל את הערך 27 בקריאה: AddNode של העלה המכיל את הערך (tr, 27,כתובת LEFT, ;(16 נקבל את מבנה הנתונים הבא: tr הבהרות נוספות: אם ערכו של p הוא NULL הכוונה היא להכניס את האיבר במקום שורש העץ. במקרה זה, שורש העץ יהפוך להיות הילד של האיבר החדש בהתאם לכתוב ב-.branchSelect p יכול להצביע גם על איברים בעץ שיש להם כבר ילדים (איברים פנימיים בעץ) ולא רק על עלים. במקרה כזה, ובמידה והאיבר החדש אמור להיכנס במקומו של ילד שקיים כבר, הילד הנוכחי יהפוך להיות הילד של האיבר החדש בהתאם למיקומו המקורי. כלומר, אם הוא היה הילד השמאלי של p, הוא יהפוך להיות הילד השמאלי של האיבר החדש. רשימת העלים תמיד מכילה את כל העלים מסודרים לפי סדר הופעתם בעץ, משמאל לימין. לשם פשטות, ניתן להניח שנתון לא מופיע פעמיים בעץ

17 typedef struct treenode{ int data; struct treenode* left; struct treenode* right; } TreeNode; שאלה 4 עץ בינארי מוגדר כך: typedef struct tree{ TreeNode* root; } Tree; void printbylevels(tree tr); כתבו את פונקציה: המדפיסה את הנתונים בעץ tr לפי רמות (קודם את הנתון ברמה 0, אחריו את נתונים ברמה 1, אחריהם את הנתונים ברמה 2, וכך הלאה), כל רמה תודפס משמאל לימין. על הפונקציה לרוץ ביעילות (n, )Θ כאשר n הוא מספר הצמתים הכולל בעץ. למשל עבור העץ: יודפס: הערות: 1. בכדי לעמוד בדרישות היעילות ייתכן ותרצו להשתמש במבנה נתונים נוסף. 2. אין להשתמש במשתנים סטאטיים

18 קבצים שאלה 1: כתבו תכנית המקבלת 2 פרמטרים. הפרמטר הראשון יהיה שם של קובץ בינארי והשני מספר שלם, x. נתון שהקובץ בנוי בפורמט הבא: בקובץ ישנן x מחרוזות, כאשר לפני כל מחרוזת יש מספר מטיפוס int המציין את גודלה, ולאחר מכן רצף באורך זה של תווים המייצגים את המחרוזת עצמה (ללא '0\' בסופה). כל מחרוזת מורכבת מאותיות קטנות וגדולות בלבד. למשל, אם x הוא 3 הקובץ מבחינה לוגית יכול להיראות: 5aBCde6aaBTRy4BBbb כלומר בקובץ ישנן 3 מחרוזות, הראשונה באורך 5 אותיות והיא,"aBCde" השניה באורך 6 אותיות והיא "aabtry" והשלישית באורך 4 אותיות והיא."BBbb" על התכנית לבצע את המשימות הבאות: לייצר מערך של מחרוזות, שגודלו x וכל מחרוזת בו היא האותיות הקטנות בלבד הלקוחות בהתאמה מכל מחרוזת שבקובץ. למשל, עבור הדוגמא הקודמת, התכנית תייצר מערך של 3 מחרוזות ואלו הן: הראשונה היא "ade" השניה "aay" והשלישית."bb" לייצר קובץ טקסט אליו יודפסו המחרוזות בצורה ממויינת (מבחינה לקסיקוגרפית). למשל, בדוגמא שלנו קובץ הטקסט שיווצר יראה: aay ade bb שמו של הקובץ המיוצר הוא כשמו של קובץ הקלט, בתוספת ".txt" בסוף. למשל: נניח ששם קובץ הקלט הוא "file.bin" שם הקובץ שייווצר יהיה."file.bin.txt"

19 typedef struct employee { int name_length; char * name; float salary; } Employee; שאלה 2 נתונה ההגדרה הבאה לרשומה: כתבו תכנית המקבלת 2 פרמטרים. הפרמטרים הינם שמות של 2 קבצים בינאריים, להלן file1 ו-.file2 נתון שהקובץ file1 הינו קובץ שמאחסן אברים מסוג Employee כלומר בנוי בפורמט הבא: בקובץ ישנם x איברים (x אינו ידוע), כאשר כל Employee מתחיל במספר מטיפוס int המציין את אורך השם, לאחר מכן רצף באורך זה של תווים המייצגים את השם עצמו (ללא '0\' בסופה) ולאחר מכן מספר בייצוג float המהווה את המשכורת. למשל, אם x הוא 2 הקובץ מבחינה לוגית יכול להיראות: 5danny ruti כלומר בקובץ ישנם 2 עובדים, הראשון שמו מכיל 5 אותיות והוא "danny" ומשכורתו והשניה שמה מכיל 4 אותיות והוא "ruti" ומשכורתה (בקובץ הבינארי כמובן אין רווחים ובדוגמא יש רווח בין העובדים להמחשה בלבד. כמו כן המספרים ייוצגו בקובץ באופן בינארי). הקובץ השני מכיל x מספרים מסוג float המהווים תוספת, בהתאמה, למשכורותיהם של העובדים הרשומים בקובץ.file1 למשל, בהמשך לדוגמא הקודמת, הקובץ יכול להכיל את המספרים 100 ו משמעות הדבר שמשכורתו של danny אמורה לעלות ב- 100 ומשכורתה של רותי ב ניתן להניח שמספר תוספות השכר בקובץ file2 הוא כמספר העובדים בקובץ.file1 על התכנית לעדכן את הקובץ file1 כך שיכיל את העובדים ומשכורותיהם המעודכנות (בהתאם לתוספות הרשומות ב- (file2 בסדר יורד מהעובד בעל השכר הגבוה ביותר לנמוך ביותר תוך שימוש במערך של מצביעים ל- Employee כאשר גודלו של המערך יהיה כמספר העובדים בקובץ.file1-19 -

20 שאלה 3 בשאלה זו נעסוק בייצוג של תמונה המורכבת מתווים. נתונה ההגדרה הבאה לייצוג תמונה טקסטואלית: כאשר typedef struct textpicture{ int numrows; int numcols; PicList pic; }TextPicture; numrowsו- numcols מחזיקים את ממדי התמונה (מספר השורות ומספר העמודות בתמונה בהתאמה), וב- picשומרים את התווים מהם מורכבת התמונה ברשימה מקושרת. הטיפוס PicList (ממנו תוגדר הרשימה של התווים בתמונה) מוגדר באופן הבא: typedef struct piclistnode{ תו בתמונה// data; PicChar struct piclistnode* next; }PicListNode; typedef struct piclist{ PicListNode* head; PicListNode* tail }PicList; כל תו בתמונה (איבר ברשימה) הוא מטיפוס.PicChar והוא מוגדר באופן הבא: typedef struct picchar{ מיקום התו// position; Point התו// ch; char }PicChar; typedef struct point{ int x; int y; }Point;

21 א. היות שצפויים להיות הרבה תווי רווח בתמונה, לצורך צמצום גודל הייצוג של התמונה, יישמרו ברשימה המקושרת (שדה picשל (TextPicture רק תווים השונים מהתו רווח. למשל כדי לייצג את התמונה הבאה: 5 שורות # $ # $ 8 עמודות נגדיר משתנה מטיפוס,TextPicture אשר השדות numrowsו- numcols יהיו מאותחלים ב- 5 וב- 8 בהתאמה, והשדה pic יכול להיות הרשימה הבאה: (4,2,'$') (3,1,'#') (2,2,'$') (3,2,'#') NULL כתבו את הפונקציה הבאה: void painttextpicture(textpicture textpic, char* filename); הפונקציה מקבלת תמונה textpic בייצוג שתואר לעיל ו"מציירת" את התמונה הנ"ל באופן מפורש לקובץ (טקסט) ששמו.filename '' '' '' '' '' '' '' '' '\n' '' '' '' '#' '' '' '' '' '\n' '' '' '$' '#' '$' '' '' '' '\n' '' '' '' '' '' '' '' '' '\n' '' '' '' '' '' '' '' '' '\n' למשל עבור התמונה לעיל ייווצר הקובץ הבא: הערות: 1. התו השמאלי עליון של התמונה ממוקם ב: (0,0) וביחס לנקודה זו נקבעים המיקומים של שאר התווים. 2. התווים ברשימה לא מופיעים בסדר ממוין כלשהו

22 ב. כתבו את הפונקציה הבאה: TextPicture * opentextpicture(char* filename); הפונקציה מקבלת כקלט את filename,שם של קובץ טקסט, המכיל תמונה טקסטואלית. הפונקציה מייצרת ומחזירה מצביע לנתון מטיפוס TextPicture,אשר מהווה ייצוג בזיכרון לתמונה הנמצאת בקובץ.filename הרשימה שמכילה את התווים (שדה pic של (TextPicture תורכב רק מהתווים שאינם רווח מסודרים לפי עמודות, בכל עמודה סדר התווים יהיה מלמעלה למטה. כלומר, ראשונים יופיעו התווים שאינם רווח בעמודה הראשונה מסודרים מלמעלה למטה, אחריהם התווים שאינם רווח מהעמודה השנייה מסודרים מלמעלה למטה, וכך הלאה. למשל עבור התמונה הבאה: 5 שורות # $ # $ 8 עמודות הפונקציה תחזיר מצביע על נתון,TextPicture אשר השדות numrowsו- numcols יהיו 5 ו- 8 בהתאמה, והשדה pic יהיה הרשימה הבאה: (2,2,'$') (3,1,'#') (3,2,'#') (4,2,'$') NULL הערות: 1. התו השמאלי עליון של התמונה ממוקם ב: (0,0) וביחס לנקודה זו נקבעים המיקומים של שאר התווים. 2. ניתן להניח כי התמונה מכילה תווים השונים מרווח. 3. בסוף כל שורה בתמונה מופיע התו 'n\'

23 ג. כתבו את הפונקציה הבאה: void replicatepicture(textpicture srcpic, int m, int n, char* reppicfilename); הפונקציה מקבלת כקלט את srcpic,משתנה מטיפוס,TextPicture המכיל תמונה טקסטואלית. הפונקציה מייצרת קובץ טקסט בשם,repPicFileName שיכיל תמונה טקסטואלית שהיא ריצוף בגודל של m-by-n של עותקים של התמונה המקורית.srcPic למשל עבור 3=m ו- 2=n ועבור srcpicשמכיל את התמונה הבאה: 5 שורות # $ # $ 8 עמודות הפונקציה תייצר את קובץ הטקסט אשר יכיל את התמונה הבאה: # # $ # $ $ # $ 15 שורות # # $ # $ $ # $ # # $ # $ $ # $ 16 עמודות הערות: 1. ניתן להניח כי התמונה המקורית מכילה תווים השונים מרווח. 2. בסוף כל שורה בתמונה מופיע התו 'n\'

24 ד. כתבו את הפונקציה הבאה: void mergepictures(textpicture* bigpic, char* smallpic); הפונקציה מקבלת כקלט את bigpic,משתנה מטיפוס,TextPicture המכיל תמונה טקסטואלית ואת,smallPic שם של קובץ טקסט, המכיל תמונה טקסטואלית. נתון כי smallpic היא תמונה הקטנה ממש מ- bigpic בכל אחד מהמימדים (גם השורות וגם העמודות). על הפונקציה לעדכן את bigpic לתמונה שהיא איחוד של שתי התמונות כך ש- smallpic מחליפה את הפינה הימנית התחתונה של.bigPic למשל עבור bigpicהמכיל את התמונה הבאה: 5 שורות # # # # # $ $ # # $ $ # $ $ $ $ $ $ 8 עמודות ועבור smallpic הבאה: 3 שורות # # # # # # # 3 עמודות הפונקציה תעדכן את bigpic להכיל את התמונה הבאה: 5 שורות # # # # # $ $ # # # # # # # $ # # # 8 עמודות הערות: בסוף כל שורה בתמונה מופיע התו 'n\'

25 typedef struct student{ char* name; int average; }STUDENT; שאלה 4 נתונה ההגדרה הבאה של רשומה שמירת נתונים על תלמיד: מאגר של תלמידים נשמר בקובץ בינארי לפי הפורמט הבא: המציין את מספר רשומות התלמידים הנמצאות בקובץ, נסמנו ב- n. מספר מטיפוס short int רצף של n רשומות, כאשר כל רשומה בנויה באופן הבא: המייצג את מספר התווים בשמו של התלמיד הנוכחי, נסמנו מספר מטיפוס short int ב-.len רצף של lenתווים, המייצגים את שמו של התלמיד הנוכחי (אין ' 0 \'בסוף רצף התווים הנ"ל). מספר מטיפוס int המייצג את ממוצע ציוניו של התלמיד הנוכחי. א. כתבו תוכנית המקבלת כפרמטר שם של קובץ המכיל נתוני תלמידים עפ"י הפורמט לעיל. התוכנית תיצור עבור קובץ התלמידים קובץ אינדקסים (קובץ המכיל נתונים של היסט יחסית לתחילת קובץ התלמידים), כך שאם נעבור על ההיסטים ברצף נקבל את התלמידים בסדר עולה של ציונים (הסטודנט המצטיין בסוף). על שמו של קובץ האינדקסים להיות השם של הקובץ המקורי בתוספת הסיומת.".ind" הערה: את המיון יש לבצע ע"י אלגוריתם יעיל ככל האפשר. ב. כתבו את הפונקציה הבאה: char ** findaveragegrade(char* database, int avggrade, int * ressize); הפונקציה מקבלת כקלט מחרוזת,database המייצגת שם של קובץ המכיל נתוני תלמידים (לפי הפורמט שהוצג בתחילת השאלה), ומספר,avgGrade המייצג ממוצע ציונים. על הפונקציה לייצר ולהחזיר מערך של מחרוזות המכיל את שמם של כל התלמידים שממוצע ציוניהם הוא avggradeאו NULL אם אין אף תלמיד כזה ב-.database במשתנה ressize יוחזר מספר התלמידים הנ"ל. הערות: 1. הניחו שהפונקציה הנ"ל נקראת רק אחרי שכבר נוצר קובץ אינדקסים, כפי שהוגדר בסעיף א', עבור הקובץ.database 2. שימו לב ליעילות זמן הריצה של הפונקציה אותה אתם כותבים

26 ביטים שאלה 1 חיפוש בספר טלפונים. נניח כי לכל לקוח בספר טלפונים יש 2 מחרוזות: typedef struct _client { char id[9]; // char phone[12]; // } Client; בשדה ת.ז. ישנן 8 ספרות (ללא ספרת ביקורת) ובסוף 0\. בשדה טלפון יש שלוש ספרות קידומת, סימן הפרדה - (מקף) ואח"כ 7 ספרות המספר עצמו בסוף. בסה"כ נשמרים 21 בתים ללקוח. ו \0 נרצה להקטין את כמות הבתים הנשמרת ללקוח, מבלי לאבד אינפורמציה. נשתמש במבנה הבא: typedef struct _short_client { unsigned char short_id[4]; unsigned char short_phone[5]; } Short_client; שימו לב כי כל התווים המשתתפים במידע שנשמר על לקוח הינם עוקבים בטבלת.ascii 0, 1, 2, 9, כאשר אין צורך לייצג את המקף כי הוא קבוע ומיקומו ידוע. מדובר בתווים: ישנם בסה"כ 10 תווים. ניתן לקודד מחדש כל תו ב 4 סיביות באופן הבא: קידוד זה מאפשר לשמור את המידע הרצוי במבנה החדש.Short_client א. כתוב פונקציה המקבלת מספר nומבצעת את הפעולות הבאות: 1. הקצאת מערך דינאמי של nרשומות מסוג Client 2. קליטת נתונים לתוך אברי המערך. 3. דחיסת הנתונים במערך למערך דינאמי של רשומות מסוג Short_clientתוך שחרור המערך הישן. 4. החזרת המערך הדחוס. ב. כתוב פונקציה המאפשרת חיפוש בספר טלפונים 1. הפונקציה מקבלת מספר ת.ז. כמחרוזת של 9 תווים. 2. העבר אותו לצורה הדחוסה 3. חפש אותו בלולאה במערך הדחוס. כאשר החיפוש מצליח, על הפונקציה להחזיר את המחרוזת המציינת מהו מספר הטלפון של הלקוח. (המחרוזת הינה בצורה המקורית ולא הדחוסה.) NULL אחרת. כתוב תוכנית המאפשרת ביצוע הפעולות הנ"ל

27 שאלה 2 כתבו תכנית שמקבלת 4 ארגומנטים: הארגומנט הראשון הינו מחרוזת המהווה שם של קובץ בינארי המורכב מבתים. הארגומנטים השני השלישי והרביעי (להלן (x,y,z הינם מספרים שסכומם חייב להיות. 8 נתון כי הקובץ מכיל מידע המקודד בביטים באופן הבא: בכל בית ישנו מספר המקודד ב x -ביטים השמאליים, מספר המקודד ב y -ביטים שאחריהם,ומספר המקודד ב z -ביטים האחרונים. לדוגמא :נניח כי x=4,y=3,z=1 ובקובץ ישנם 3 בתים אשר הייצוג הבינארי שלהם הוא כדלהלן ) משמאל לימין) הרווחים הם רק להמחשת החלוקה לבתים. המספרים המקודדים בבית הראשון הינם: המספרים המקודדים בבית הראשון הינם: המספרים המקודדים בבית הראשון הינם: כעת, נתונה הגדרה עבור מספר number ושכיחותו :frequency typedef struct { int number; int frequency; } Num_and_Freq; כמו-כן, נתונה ההגדרה הבאה לייצוג רשימה מקושרת של Num_and_Freq -ים: typedef struct listnode{ Num_and_Freq data; struct listnode* next; } ListNode; typedef struct list { ListNode* head; ListNode* tail; } List; על התכנית לייצר רשימה מקושרת המורכבת מהמספרים שהופיעו בקובץ הקלט. למשל, בדוגמא הקודמת סך הכל היו המספרים הבאים: 10 פעם אחת 0 פעמיים 1 פעמיים 5 פעם אחת 3 פעם אחת 2 פעמיים לכן ברשימה יהיו 6 תאים, התא הראשון יכיל את המספר הראשון שהופיע בקובץ (בדוגמא זהו המספר 10) וכן הלאה

28 שאלה 3 א. נתונה מחרוזת באורך n כך ש- n הינו כפולה של 8. נתון שבמחרוזת מספר התווים השונים הוא לכל היותר 8. כיוון שמספיקים 3 ביטים לייצג כל תו ניתן לצמצם את המקום הנדרש ביחס של 3/8. אופן הצמצום: לכל תו יותאם מספר בין 0 ל- (3 7 ביטים). באופן זה בכל שלושה בתים ייוצגו שמונה תווים במקום שלושה בלבד. על-מנת להתאים את המספרים, נעיין בסדרת התווים השונים מהמחרוזת המקורית, מסודרים לפי סדר הופעתם הראשונה, והערך שיוצמד לכל תו יהיה מיקומו בסדרה זו (החל מ- 0). לדוגמא: אם המחרוזת המקורית היא: :"aaaccbac" ל- a, יוצמד הערך 0. ל- c, יוצמד הערך 1. ל- b, יוצמד הערך והמחרוזת המצומצמת תהיה: הרווחים בין הספרות נועדו להמחשת הייצוג של כל תו. הקווים התחתונים מסמלים את הבתים השונים. ממשו ראשית את הפונקציה: char* getuniqueletters(char* text, int* size); המקבלת מחרוזת,text ומחזירה מערך המכיל את התווים השונים המופיעים ב-,text מסודרים במערך לפי סדר הופעתם במחרוזת.text הפונקציה גם מעדכנת במשתנה,size את גודלו של המערך המוחזר. למשל: אם תופעל הפונקציה עם,text="mullyllum" היא תחזיר את המערך: ['y','m'],,'u','l' ותעדכן בכתובת של sizeאת הערך 4. שימו לב: הערך המוחזר של הפונקציה הוא מערך של תווים, ולא מחרוזת (לא מסתיים ב- '0\'). כעת, כתבו תוכנית המקבלת כפרמטר שם של קובץ טקסט. ידוע שהקובץ הנ"ל מורכב משורות. אורכה של כל שורה מתחלק ב- 8 ובכל שורה יש לכל היותר 8 תווים שונים. על התוכנית להמיר קובץ זה לקובץ בינארי הבנוי לפי הפורמט הבא: עבור כל שורה בקובץ הטקסט, ישמרו בקובץ הבינארי הנתונים הבאים: 1. מספר מטיפוס unsigned char המייצג את מספר התווים השונים בשורה. 2. רצף (באורך זה) של char -ים המכיל את סדרת התווים השונים בשורה, מסודרים לפי סדר הופעתם הראשונה באותה שורה. 3. מספר מטיפוס unsigned int המייצג את מספר הבתים בהם נשמרים התווים המכווצים של השורה. 4. רצף (באורך זה) של בתים המכילים את הכווץ של השורה. שמו של הקובץ המיוצר הוא כשמו של קובץ הקלט, בתוספת ".rds" בסוף. לדוגמא:

29 נניח ש- "stam.txt" הוא קובץ טקסט, המכיל את שתי השורות: acbaccba mbbmbmmb אם תועבר לתוכנית, כפרמטר בשורת ההפעלה, המחרוזת,"stam.txt" התכנית תייצר את הקובץ."stam.txt.rds" קובץ זה יכיל: 3 'a' 'b' 'c' 'm' 'b' ב. כעת נרצה לשחזר מחרוזת מכווצת המכילה לכל היותר 8 תווים שונים, למחרוזת רגילה. כל 3 בתים במחרוזת המכווצת מייצגים שמונה תווים מהמחרוזת הרגילה. כל תו תופס 3 ביטים. את השחזור נבצע בעזרת מערך codeהמכיל את כל התווים השונים של המחרוזת, כאשר כל תו מופיע בדיוק פעם אחת. במחרוזת המכווצת במקום כל תו שומרים 3 ביטים המייצגים את המיקום של אותו תו במערך.code למשל אם המחרוזת המכווצת היא: והמערך ['x','o'] code = אזי המחרוזת המשוחזרת תהיה:."xooxoxxo" כתבו תוכנית המקבלת כפרמטר שם של קובץ בינארי עם סיומת.rds השומר מחרוזות בצורה מכווצת בהתאם לפורמט הנתון בסעיף א'. על התוכנית להמיר קובץ זה לקובץ טקסט. שמו של הקובץ המיוצר הוא כשמו של קובץ הקלט, ללא הסיומת.rds

30 שאלה 4 א. נתון תו מוצפן.ch על מנת לפענח אותו יש לשנות את מיקום הביטים בו. השינוי יעשה בעזרת תמורה ] 7 [a 0, a 1,, a של המספרים.0-7 תהליך הפענוח יעשה באופן הבא: את הביט האפס של התו ch נשים בביט שנמצא במקום ה- a 0 בתו המפוענח. את הביט האחד של התו ch נשים בביט שנמצא במקום ה- a 1 בתו המפוענח. וכך הלאה... הערה חשובה: הביט ה- 0 הוא הביט הימני ביותר כלומר ה- bit.(lsb) least significant למשל אם נרצה לפענח את התו שמיוצג בינארית: בעזרת התמורה: [3,2,1,0,7,6,5,4] נקבל את התו המפוענח שמיוצג בינארית: (למשל הביט האפס של התו המקורי (1) עבר לביט ה- 3 בתו המפוענח, וכו'). char decode(char ch, int* key); כתבו את הפונקציה: הפונקציה מקבלת תו מוצפן,ch ומערך keyבגודל 8 המכיל תמורה כלשהי של המספרים 0-7. הפונקציה תפענח את התו,ch עפ"י השיטה שתוארה לעיל, ותחזיר את התו המפוענח. ב. השתמשו בפונקציה מסעיף א' על מנת לכתוב את הפונקציה: char* decodestring(char* name, int* key); הפונקציה מקבלת מחרוזת name המכילה שם מקודד, ומערך key בגודל 8 המכיל תמורה כלשהי של המספרים 0-7. הפונקציה תיצור ותחזיר מחרוזת חדשה שתכיל את השם המפוענח. פענוח השם יתבצע ע"י פענוח כל אחד מתווי name עפ"י התמורה.key ג. שירות הביטחון הכללי שומר שני קבצים עבור כל פעולה שהוא מבצע. 1. קובץ בינארי (שאותו ניתן אפילו לשלוח ב- (mail המחזיק בצורה מוצפנת שמות של הסוכנים המשתתפים במבצע. 2. קובץ טקסט (שנשמר בכספת) המכיל את התמורות שבעזרתן ניתן לפענח את השמות המקודדים בקובץ הבינארי. פורמט קובץ השמות המקודדים (הקובץ הבינארי): שמות הסוכנים נשמרים ברצף. כל שם (מקודד) נשמר באופן הבא: מספר שלם int) (short המייצג את אורך שמו של הסוכן ואחריו רצף באורך זה של תווים מוצפנים המרכיבים יחד את שמו. פורמט קובץ המפתחות (קובץ הטקסט): הקובץ מורכב משורות. בכל שורה תופיע תמורה של המספרים 0-7 המופרדים ברווחים. סדר השורות בקובץ מתאים לסדר בו נשמרו השמות המקודדים בקובץ השמות. בפרט מספר השורות הוא כמספר הסוכנים בקובץ השמות. בהינתן ההגדרה הבאה למבנה עבור רשימה מקושרת: typedef struct l_node{ char* name; struct l_node * next; }L_NODE; typedef struct list{ L_NODE* head; L_NODE* tail; }LIST; כתבו את הפונקציה: LIST decodemission(file* agents, FILE* keys); הפונקציה מקבלת מצביעים לשני קבצים: -agents קובץ בינארי המכיל שמות מקודדים של סוכנים בפורמט שתואר לעיל. -keys קובץ טקסט המכיל מפתחות בפורמט שתואר לעיל

31 הפונקציה תחזיר רשימה, שתכיל את שמותיהם המפוענחים של הסוכנים המופיעים בקובץ.agents על הרשימה להכיל את הסוכנים לפי סדר הופעתם בקובץ. שאלה 5 א. כתבו את הפונקציה: int* filter(int* Numbers, int size, unsigned char* pred, int* new_size); הפונקציה מקבלת מערך Numbersשל מספרים שלמים שונים זה מזה, ואת גודלו.size כמו כן, היא size מקבלת מערך pred של ביטים, בגודל 8 בתים. כל ביט במערך,pred מייצג נתון אחד של המערך,Numbers באופן הבא: הביט ה- 0 בבית ה- 0 של המערך,pred מייצג את הנתון באינדקס 0 במערך.Numbers הביט ה- 1 בבית ה- 0 של המערך,pred מייצג את הנתון באינדקס 1 במערך.Numbers M הביט ה- 0 בבית ה- 1 של המערך,pred מייצג את הנתון באינדקס 8 במערך.Numbers וכך הלאה. הפונקציה תייצר ותחזיר את תת המערך המכיל אך ורק את הנתונים מהמערך,Numbers אשר הביט המתאים להם במערך,pred הוא 1. כמו כן, הפונקציה תעדכן במשתנה הפלט new_sizeאת גודלו של תת המערך שייצרה. Numbers למשל, אם המערכים Numbers ו-,pred מוגדרים באופן הבא: pred הקריאה size),filter(numbers, pred,,16 תייצר את המערך: וכן תעדכן במשתנה אליו מצביע new_size את הערך הערות: הניחו ש-,size מספר הנתונים במערך,Numbers מתחלק ב- 8. שימו לב כי בציור, האינדקסים במערך המספרים מתקדמים משמאל לימין, ואילו הביטים בכל בית נספרים מימין לשמאל (מה- LSB אל ה-.(MSB ב. השתמשו בפונקציה מסעיף א', על מנת לכתוב הפונקציה הבאה: int* xorfilter(int* Numbers, int size, unsigned char* pred1, unsigned char* pred2, int* new_size); הפונקציה מקבלת מערך Numbers של מספרים שלמים שונים זה מזה, ואת גודלו.size כמו כן היא size מקבלת שני מערכים pred1 ו- pred2 של ביטים, כל אחד מהם בגודל 8 בתים. כל אחד מהביטים, בכל אחד מהמערכים pred1 ו-,pred2 מייצג נתון מסוים של המערך,Numbers לפי ההתאמה שתוארה בסעיף א'

32 הפונקציה תייצר ותחזיר את תת המערך המכיל אך ורק את נתונים מהמערך Numbers כאשר נתון מסוים יופיע במערך התוצאה אם"ם בדיוק אחד מבין הביטים המתאימים לו במערך,pred1 ו-,pred2 הוא 1. כמו כן, הפונקציה תעדכן במשתנה הפלט new_sizeאת גודלו של תת המערך שייצרה. הערה: הניחו ש-,size מספר הנתונים במערך,Numbers מתחלק ב

33 פויינטרים לפונקציות שאלה 1 כתבו את הפונקציה: void* scramble(void* arr, int ElemSize, int n, int* indarr); הפונקציה מקבלת: -arr מערך של איברים מטיפוס כלשהו. arr גודל של כל אלמנט במערך -ElemSize.arr מספר האיברים במערך n-. 0,1, K,( n 1) מערך המכיל תמורה של המספרים: -indarr על הפונקציה ליצור מערך חדש שבו סדר האיברים נקבע על פי המערך indarrבאופן הבא: האיבר ה - iבמערך החדש יהיה האיבר שהאינדקס שלו במערך הישן הוא.indArr[i] למשל, אם = 3 n ו- [2,0,1] = indarr אז: במקום ה- 0 של המערך החדש ימצא האיבר מהמקום ה- 2 של.arr במקום ה- 1 של המערך החדש ימצא האיבר מהמקום ה- 0 של.arr במקום ה- 2 של המערך החדש ימצא האיבר מהמקום ה- 1 של.arr שאלה 2 נתון האלגוריתם הבא למימוש חיפוש בינארי של נתון במערך: קלט: פלט: מערך של נתונים.Arr גודל המערך - Size נתון לחיפוש.Item.(Arr מופיע במערך Item) אם"ם (true) found false.1 left 0.2 right (Size-1).3 (! found ( left right) 4. כל עוד ) place ( (left+right) div 2) אם (Arr[place]=Item) found true אחרת אם (Arr[place]<Item) left (place+1) אחרת right (place-1) החזר את found

34 א. כתבו את הפונקציה הבאה: int binsearch(void* Arr, int Size, int ElemSize, void* Item, int (*compare)(void*, void*)); על הפונקציה לממש אלגוריתם זה, למערכים מטיפוסים שונים (מערכים של מחרוזות, מערכים של int -ים וכו'). הפונקציה מקבלת: -Arr כתובת התחלה של מערך. -Size מספר הנתונים בו. -ElemSize מספר הבתים שתופס כל אחד מהנתונים. -Item כתובת של נתון שלגביו יש להכריע האם הוא נמצא במערך. טיפוס הנתון הוא כטיפוס נתוני המערך. -compare פויינטר לפונקציה המשווה בין שני נתונים (מהטיפוס של הנתונים מהמערך). על הפונקציה להחזיר את הערך 1 אם הנתון עליו מצביע Itemשווה לאחד מנתוני המערך, או 0 אחרת. הערה: הניחו שהפונקציה,compare מקבלת כתובות של שני נתונים אותם היא משווה. ומחזירה: אפס - אם שני הפרמטרים מצביעים על נתונים שווים. מספר שלילי - אם הפרמטר הראשון מצביע על נתון קטן יותר מהנתון שמוצבע ע"י הפרמטר השני. מספר חיובי - אם הפרמטר הראשון מצביע על נתון גדול יותר מהנתון שמוצבע ע"י הפרמטר השני. ב. השתמשו בפונקציה BinSearch,שכתבתם, על מנת לכתוב את הפונקציה: int stringbinsearch(char** strings, int size, char* str); המקבלת מערך stringsשל מחרוזות ממוינות בסדר לקסיקוגרפי, את גודלו,size ומחרוזת נוספת.str על הפונקציה להחזיר את הערך 1 אם המחרוזת str מופיעה במערך,strings או 0 אחרת. למשל אם stringsהוא המערך: abcdefg "good-luck" "mully" "stam" אז ההפעלה: (" stringbinsearch(strings,4,"good-luckתחזיר

35 שאלה 3 מאגר של נתונים על מוצרים נשמר בקובץ בינארי. הקובץ בנוי בפורמט הבא: מספר מטיפוס,int המייצג את מספר המוצרים בקובץ. נסמן את ערכו ב- N. 1. רצף באורךNשל נתונים של מוצרים. כל מוצר מופיע בקובץ בפורמט הבא: 2. מספר מטיפוס,int המייצג את מספר התווים בשמו של המוצר. נסמן את ערכו ב-.len רצף של lenתווים, המכיל את שמו של המוצר (ללא ' 0 \'בסופו). מספר מטיפוס,int המייצג את מחירו של המוצר. נרצה לייצר שני קבצי אינדקס לקובץ המאגר הנ"ל: מכיל את ההיסטים (offsets) למוצרים בקובץ המאגר, ממוינים לפי שם המוצר (מהקטן לגדול). מכיל את ההיסטים למוצרים בקובץ המאגר, ממוינים לפי המחירים שלהם (מהקטן לגדול). על מנת למנוע שכפול קוד ביצירת שני קבצי האינדקס, נגדיר פונקציה כללית ליצירת קובץ אינדקס ממוין, ונפעיל אותה פעמיים ליצירת כל אחד מקבצי האינדקס. בסעיף א' של השאלה נגדיר את הפונקציה הכללית ליצירת קובץ אינדקס ממוין, ובסעיף ב' נייצר את שני קבצי האינדקס הרצויים לנו. א. כתבו את הפונקציה: void createsortedindex(char* DB_Name, char* IndexFileName, int (*compare) (void*, void*)); הפונקציה מקבלת מחרוזת DB_Name המכילה את שמו של קובץ בינארי. הקובץ מכיל מאגר של נתוני מוצרים (לא ממוינים) בפורמט שהוגדר לעיל. הפונקציה מייצרת קובץ אינדקסים, בשם,IndexFileName המכיל רצף של נתונים מטיפוס,long int כל נתון בקובץ האינדקס, מייצג היסט מתחילת קובץ המאגר (DB_Name) לתחילת נתוניו של מוצר מסוים. אם נעבור על קובץ המאגר, לפי רצף ההיסטים בקובץ האינדקסים, המיוצר ע"י הפונקציה, נקבל את נתוני המאגר ממוינים מהקטן לגדול, עפ"י הסדר המושרה מפונקצית ההשוואה.compare הערה: הפונקציה compareהינה פונקצית השוואה כללית, המקבלת מצביעים לשני נתונים ומשווה ביניהם. הפונקציה משרה סדר באופן הבא: אם הנתון עליו מצביע הפרמטר הראשון קטן מזה שעליו מצביע הפרמטר השני, היא תחזיר מספר שלילי. אם הנתון עליו מצביע הפרמטר הראשון גדול מזה שעליו מצביע הפרמטר השני, היא תחזיר מספר חיובי. אם הנתון עליו מצביע הפרמטר הראשון שווה לזה שעליו מצביע הפרמטר השני, היא תחזיר את הערך 0. לצורך כתיבת הפונקציה,createSortedIndex ממשו (בין היתר) את הפונקציה: void sort(void* Arr, int elem_size, int num_elems, int (*compare) (void*, void*)); הפונקציה sort מקבלת מצביע Arr לתחילת מערך, מספר שלם elem_sizeהמייצג את גודלו של כל נתון במערך, ומספר שלם נוסף num_elemsהמייצג את מספר הנתונים במערך. הפונקציה ממיינת את הנתונים במערך,Arr עפ"י הסדר המושרה מפונקצית ההשוואה הכללית.compare

36 ב. השתמשו בפונקציה שכתבתם בסעיף א', על מנת לכתוב את שתי הפונקציות הבאות: void indexsortedbyname(char* DB_Name, char* IndexFileName); void indexsortedbyprice(char* DB_Name, char* IndexFileName); כל אחת מהפונקציות מקבלת שם של קובץ DB_Name המכיל מאגר של נתונים על מוצרים, בפורמט שפורט בתחילת השאלה. כל אחת מהפונקציות מייצרת קובץ אינדקסים בשם indexfilename (לפי הפורמט שהוגדר בסעיף א'). אם נעבור על קובץ המאגר, לפי רצף ההיסטים בקובץ אשר מייצרת הפונקציה הראשונה, נקבל את נתוני המאגר ממוינים לפי שם המוצרים, מהקטן לגדול. אם נעבור על קובץ המאגר, לפי רצף ההיסטים בקובץ אשר מייצרת הפונקציה השנייה, נקבל את נתוני המאגר ממוינים לפי מחיר המוצרים, מהקטן לגדול

C תפשב םדקתמ תונכת םיליגרת תרבוח - - 1

C תפשב םדקתמ תונכת םיליגרת תרבוח - - 1 תכנות מתקדם בשפת C חוברת תרגילים - 1 - קלט פלט. MaxMult MaxMult שאלה 1. 10 א. כתבו תוכנית המדפיסה לוח כפל בגודל 10 ב. כתבו תוכנית המקבלת מספר,,MaxMult ומדפיסה לוח כפל בגודל לדוגמא עבור: MaxMult=4 יודפס:

Διαβάστε περισσότερα

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם תזכורת: פולינום ממעלה או מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה p f ( m i ) = p m1 m5 תרגיל: נתון עבור x] f ( x) Z[ ראשוני שקיימים 5 מספרים שלמים שונים שעבורם p x f ( x ) f ( ) = נניח בשלילה ש הוא

Διαβάστε περισσότερα

חורף תש''ע פתרון בחינה סופית מועד א'

חורף תש''ע פתרון בחינה סופית מועד א' מד''ח 4 - חורף תש''ע פתרון בחינה סופית מועד א' ( u) u u u < < שאלה : נתונה המד''ח הבאה: א) ב) ג) לכל אחד מן התנאים המצורפים בדקו האם קיים פתרון יחיד אינסוף פתרונות או אף פתרון אם קיים פתרון אחד או יותר

Διαβάστε περισσότερα

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur פתרון תרגיל --- 5 מרחבים וקטורים דוגמאות למרחבים וקטורים שונים מושגים בסיסיים: תת מרחב צירוף לינארי x+ y+ z = : R ) בכל סעיף בדקו האם הוא תת מרחב של א } = z = {( x y z) R x+ y+ הוא אוסף הפתרונות של המערכת

Διαβάστε περισσότερα

תרגול פעולות מומצאות 3

תרגול פעולות מומצאות 3 תרגול פעולות מומצאות. ^ = ^ הפעולה החשבונית סמן את הביטוי הגדול ביותר:. ^ ^ ^ π ^ הפעולה החשבונית c) #(,, מחשבת את ממוצע המספרים בסוגריים.. מהי תוצאת הפעולה (.7,.0,.)#....0 הפעולה החשבונית משמשת חנות גדולה

Διαβάστε περισσότερα

השאלות..h(k) = k mod m

השאלות..h(k) = k mod m מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 5 השאלות 2. נתונה טבלת ערבול שבה התנגשויות נפתרות בשיטת.Open Addressing הכניסו לטבלה את המפתחות הבאים: 59 88, 17, 28, 15, 4, 31, 22, 10, (מימין לשמאל),

Διαβάστε περισσότερα

תרגיל 13 משפטי רול ולגראנז הערות

תרגיל 13 משפטי רול ולגראנז הערות Mthemtics, Summer 20 / Exercise 3 Notes תרגיל 3 משפטי רול ולגראנז הערות. האם קיים פתרון למשוואה + x e x = בקרן )?(0, (רמז: ביחרו x,f (x) = e x הניחו שיש פתרון בקרן, השתמשו במשפט רול והגיעו לסתירה!) פתרון

Διαβάστε περισσότερα

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשעד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, 635865 מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן שאלה מספר 1 נתון: 1. סדרה חשבונית שיש בה n איברים...2 3. האיבר

Διαβάστε περισσότερα

מבני נתונים ואלגוריתמים תרגול #11

מבני נתונים ואלגוריתמים תרגול #11 מבני נתונים ואלגוריתמים תרגול # התאמת מחרוזות סימונים והגדרות: P[,,m] כך Σ * טקסט T )מערך של תווים( באורך T[,,n] n ותבנית P באורך m ש.m n התווים של P ו T נלקחים מאלפבית סופי Σ. לדוגמא: {a,b,,z},{,}=σ.

Διαβάστε περισσότερα

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin( א. s in(0 c os(0 s in(60 c os(0 s in(0 c os(0 s in(0 c os(0 s in(0 0 s in(70 מתאים לזהות של cos(θsin(φ : s in(θ φ s in(θcos(φ sin ( π cot ( π cos ( 4πtan ( 4π sin ( π cos ( π sin ( π cos ( 4π sin ( 4π

Διαβάστε περισσότερα

תרגול 8: מטלאב לולאות

תרגול 8: מטלאב לולאות מבוא למחשב בשפת Matlab : מטלאב לולאות נכתב על-ידי רמי כהן,אולג רוכלנקו, לימור ליבוביץ ואיתן אביאור כל הזכויות שמורות לטכניון מכון טכנולוגי לישראל לולאת while a=input('enter a positive number:'); קליטת

Διαβάστε περισσότερα

סדרות - תרגילים הכנה לבגרות 5 יח"ל

סדרות - תרגילים הכנה לבגרות 5 יחל סדרות - הכנה לבגרות 5 יח"ל 5 יח"ל סדרות - הכנה לבגרות איברים ראשונים בסדרה) ) S מסמן סכום תרגיל S0 S 5, S6 בסדרה הנדסית נתון: 89 מצא את האיבר הראשון של הסדרה תרגיל גוף ראשון, בשנייה הראשונה לתנועתו עבר

Διαβάστε περισσότερα

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשעד פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. לכל אחת מן הפונקציות הבאות, קבעו אם היא חח"ע ואם היא על (הקבוצה המתאימה) (א) 3} {1, 2, 3} {1, 2, : f כאשר 1 } 1, 3, 3, 3, { 2, = f לא חח"ע: לדוגמה

Διαβάστε περισσότερα

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא: של שאלות מבחינות פתרונות.1 שאלהזוהופיעהבמבחןמועדג 01 דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא: הגדרות: עבור צומת בעץ בינארי T נסמן ב- T את תת העץ של T ששורשו. (תת העץ הזה כולל את ). נגדיר את תת העץ

Διαβάστε περισσότερα

שאלה 1 V AB פתרון AB 30 R3 20 R

שאלה 1 V AB פתרון AB 30 R3 20 R תרגילים בתורת החשמל כתה יג שאלה א. חשב את המתח AB לפי משפט מילמן. חשב את הזרם בכל נגד לפי המתח שקיבלת בסעיף א. A 60 0 8 0 0.A B 8 60 0 0. AB 5. v 60 AB 0 0 ( 5.) 0.55A 60 א. פתרון 0 AB 0 ( 5.) 0 0.776A

Διαβάστε περισσότερα

ל הזכויות שמורות לדפנה וסטרייך

ל הזכויות שמורות לדפנה וסטרייך מרובע שכל זוג צלעות נגדיות בו שוות זו לזו נקרא h באיור שלעיל, הצלעות ו- הן צלעות נגדיות ומתקיים, וכן הצלעות ו- הן צלעות נגדיות ומתקיים. תכונות ה כל שתי זוויות נגדיות שוות זו לזו. 1. כל שתי צלעות נגדיות

Διαβάστε περισσότερα

gcd 24,15 = 3 3 =

gcd 24,15 = 3 3 = מחלק משותף מקסימאלי משפט אם gcd a, b = g Z אז קיימים x, y שלמים כך ש.g = xa + yb במלים אחרות, אם ה כך ש.gcd a, b = xa + yb gcd,a b של שני משתנים הוא מספר שלם, אז קיימים שני מקדמים שלמים כאלה gcd 4,15 =

Διαβάστε περισσότερα

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים מבוא: קבוצות מיוחדות של מספרים ממשיים קבוצות של מספרים ממשיים צעד ראשון להצטיינות קבוצה היא אוסף של עצמים הנקראים האיברים של הקבוצה אנו נתמקד בקבוצות של מספרים ממשיים בדרך כלל מסמנים את הקבוצה באות גדולה

Διαβάστε περισσότερα

Logic and Set Theory for Comp. Sci.

Logic and Set Theory for Comp. Sci. 234293 - Logic and Set Theory for Comp. Sci. Spring 2008 Moed A Final [partial] solution Slava Koyfman, 2009. 1 שאלה 1 לא נכון. דוגמא נגדית מפורשת: יהיו } 2,(p 1 p 2 ) (p 2 p 1 ).Σ 2 = {p 2 p 1 },Σ 1 =

Διαβάστε περισσότερα

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תרגול מס' 6 פתרון מערכת משוואות ליניארית אנליזה נומרית 0211 סתיו - תרגול מס' 6 פתרון מערכת משוואות ליניארית נרצה לפתור את מערכת המשוואות יהי פתרון מקורב של נגדיר את השארית: ואת השגיאה: שאלה 1: נתונה מערכת המשוואות הבאה: הערך את השגיאה היחסית

Διαβάστε περισσότερα

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p; מבני נתונים פתרונות לסט שאלות דומה לשאלות בנושאים () זמני ריצה של פונקציות רקורסיביות () מיונים השאלות פתרו את נוסחאות הנסיגה בסעיפים א-ג על ידי הצבה חוזרת T() כאשר = T() = T( ) + log T() = T() כאשר =

Διαβάστε περισσότερα

סיכום- בעיות מינימוםמקסימום - שאלון 806

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

Διαβάστε περισσότερα

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

( )( ) ( ) f : B C היא פונקציה חחע ועל מכיוון שהיא מוגדרת עי. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חחע אז ועל פי הגדרת הרצאה 7 יהיו :, : C פונקציות, אז : C חח"ע ו חח"ע,אז א אם על ו על,אז ב אם ( על פי הגדרת ההרכבה )( x ) = ( )( x x, כךש ) x א יהיו = ( x ) x חח"ע נקבל ש מכיוון ש חח"ע נקבל ש מכיוון ש ( b) = c כך ש b ( ) (

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשעו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים: לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( 2016 2015 )............................................................................................................. חלק ראשון: שאלות שאינן להגשה.1

Διαβάστε περισσότερα

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

2 יחל ) השלמה ל - 5 יחל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת. 1 6 מאי, 2004 מועד הבחינה: 2 יח"ל ) השלמה ל - 5 יח"ל) פרק ראשון (50 נקודות) :1 Ï (מקור: שירלי רוזנברג כהן) נגדיר טיפוס נתונים חדש בשם תלת-מחסנית, כמבנה המכיל 3 מחסניות S3. S2, S1, נגדיר את הפעולות הבאות

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 12

מתמטיקה בדידה תרגול מס' 12 מתמטיקה בדידה תרגול מס' 2 נושאי התרגול: נוסחאות נסיגה נוסחאות נסיגה באמצעות פונקציות יוצרות נוסחאות נסיגה באמצעות פולינום אופייני נוסחאות נסיגה לעתים מפורש לבעיה קומבינטורית אינו ידוע, אך יחסית קל להגיע

Διαβάστε περισσότερα

גבול ורציפות של פונקציה סקלרית שאלות נוספות

גבול ורציפות של פונקציה סקלרית שאלות נוספות 08 005 שאלה גבול ורציפות של פונקציה סקלרית שאלות נוספות f ( ) f ( ) g( ) f ( ) ו- lim f ( ) ו- ( ) (00) lim ( ) (00) f ( בסביבת הנקודה (00) ) נתון: מצאו ) lim g( ( ) (00) ננסה להיעזר בכלל הסנדביץ לשם כך

Διαβάστε περισσότερα

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור הרצאה מס' 1. תורת הקבוצות. מושגי יסוד בתורת הקבוצות.. 1.1 הקבוצה ואיברי הקבוצות. המושג קבוצה הוא מושג בסיסי במתמטיקה. אין מושגים בסיסים יותר, אשר באמצעותם הגדרתו מתאפשרת. הניסיון והאינטואיציה עוזרים להבין

Διαβάστε περισσότερα

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( ) פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד a d U c M ( יהי b (R) a b e ל (R M ( (אין צורך להוכיח). מצאו קבוצה פורשת ל. U בדקו ש - U מהווה תת מרחב ש a d U M (R) Sp,,, c a e

Διαβάστε περισσότερα

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים חזרה מבנה נתונים אמצעי לאחסון נתונים במחשב. יש הרבה סוגים שונים, וצריך להשתמש במבנה שהכי מתאים לבעיה שלנו מבחינת שימוש בנתונים הוספה, מחיקה

Διαβάστε περισσότερα

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

מבני נתונים מבחן מועד ב' סמסטר חורף תשסו TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון - מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצים: רן אל-יניב, נאדר בשותי מבני נתונים 234218-1 מבחן מועד ב' סמסטר חורף תשס"ו

Διαβάστε περισσότερα

Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות.

Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות. מילון למחרוזות - Trie Lecture of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds מבני נתונים למחרוזות Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות. המימוש

Διαβάστε περισσότερα

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ משוואות רקורסיביות הגדרה: רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים למשל: T = Θ 1 if = 1 T + Θ if > 1 יונתן יניב, דוד וייץ 1 דוגמא נסתכל על האלגוריתם הבא למציאת

Διαβάστε περισσότερα

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשעב זהויות טריגונומטריות תרגול חזרה זהויות טריגונומטריות si π α) si α π α) α si π π ), Z si α π α) t α cot π α) t α si α cot α α α si α si α + α siα ± β) si α β ± α si β α ± β) α β si α si β si α si α α α α si α si α α α + α si

Διαβάστε περισσότερα

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m Observabiliy, Conrollabiliy תרגול 6 אובזרווביליות אם בכל רגע ניתן לשחזר את ( (ומכאן גם את המצב לאורך זמן, מתוך ידיעת הכניסה והיציאה עד לרגע, וזה עבור כל צמד כניסה יציאה, אז המערכת אובזרוובילית. קונטרולביליות

Διαβάστε περισσότερα

המכללה האקדמית של ת"א-יפו בית הספר למדעי המחשב מבוא למדעי המחשב בשפת C: חוברת תרגילים

המכללה האקדמית של תא-יפו בית הספר למדעי המחשב מבוא למדעי המחשב בשפת C: חוברת תרגילים המכללה האקדמית של ת"א-יפו בית הספר למדעי המחשב מבוא למדעי המחשב בשפת C: חוברת תרגילים כל הזכויות בחוברת שמורות לכותבים. כל שימוש בחומר הכלול בחוברת זו, שאינו לצורכי תרגול עצמי ו/או הגשת תרגילים במסגרת

Διαβάστε περισσότερα

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק יום א 14 : 00 15 : 00 בניין 605 חדר 103 http://u.cs.biu.ac.il/ brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק 29/11/2017 1 הגדרת קבוצת הנוסחאות הבנויות היטב באינדוקציה הגדרה : קבוצת הנוסחאות הבנויות

Διαβάστε περισσότερα

מבני נתונים ויעילות אלגוריתמים

מבני נתונים ויעילות אלגוריתמים מבני נתונים ויעילות אלגוריתמים (8..05). טענה אודות סדר גודל. log טענה: מתקיים Θ(log) (!) = הוכחה: ברור שמתקיים: 3 4... 4 4 4... 43 פעמים במילים אחרות:! נוציא לוגריתם משני האגפים: log(!) log( ) log(a b

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשעו (2016) לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)............................................................................................................. חלק ראשון: שאלות שאינן להגשה 1. עבור

Διαβάστε περισσότερα

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. א{ www.sikumuna.co.il מהי קבוצה? קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. קבוצה היא מושג יסודי במתמטיקה.התיאור האינטואיטיבי של קבוצה הוא אוסף של עצמים כלשהם. העצמים הנמצאים בקבוצה הם איברי הקבוצה.

Διαβάστε περισσότερα

תכנות בשפת C פרק שלישי: בקרת זרימה שייקה בילו יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע מומחה למערכות מידע חינוכיות, אקדמיות ומנהליות

תכנות בשפת C פרק שלישי: בקרת זרימה שייקה בילו יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע מומחה למערכות מידע חינוכיות, אקדמיות ומנהליות תכנות בשפת C פרק שלישי: בקרת זרימה שייקה בילו יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע מומחה למערכות מידע חינוכיות, אקדמיות ומנהליות תזכורת: שימוש במשתנים מהו משתנה הגדרת משתנים ;int i ; char c= a קלט/פלט

Διαβάστε περισσότερα

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד. חידה לחימום ( M ש- N > (כך מספרים טבעיים Mו- N שappleי appleתוappleים בעלי אותה הזוגיות (שappleיהם זוגיים או שappleיהם אי - זוגיים). המספרים הטבעיים מ- Mעד Nמסודרים בשורה, ושappleי שחקappleים משחקים במשחק.

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 5

מתמטיקה בדידה תרגול מס' 5 מתמטיקה בדידה תרגול מס' 5 נושאי התרגול: פונקציות 1 פונקציות הגדרה 1.1 פונקציה f מ A (התחום) ל B (הטווח) היא קבוצה חלקית של A B המקיימת שלכל a A קיים b B יחיד כך ש. a, b f a A.f (a) = ιb B. a, b f או, בסימון

Διαβάστε περισσότερα

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה. פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה. 16 במאי 2010 נסמן את מחלקת הצמידות של איבר בחבורה G על ידי } g.[] { y : g G, y g כעת נניח כי [y] [] עבור שני איברים, y G ונוכיח כי [y].[] מאחר והחיתוך

Διαβάστε περισσότερα

אלגברה ליניארית (1) - תרגיל 6

אלגברה ליניארית (1) - תרגיל 6 אלגברה ליניארית (1) - תרגיל 6 התרגיל להגשה עד יום חמישי (12.12.14) בשעה 16:00 בתא המתאים בבניין מתמטיקה. נא לא לשכוח פתקית סימון. 1. עבור כל אחד מתת המרחבים הבאים, מצאו בסיס ואת המימד: (א) 3)} (0, 6, 3,,

Διαβάστε περισσότερα

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשסו מס' סטודנט: TECHNION ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב מבני נתונים 234218 1 מבחן מועד ב ' סמסטר אביב תשס"ו מרצה: אהוד ריבלין מתרגלים: איתן

Διαβάστε περισσότερα

{ : Halts on every input}

{ : Halts on every input} אוטומטים - תרגול 13: רדוקציות, משפט רייס וחזרה למבחן E תכונה תכונה הינה אוסף השפות מעל.(property המקיימות תנאים מסוימים (תכונה במובן של Σ תכונה לא טריביאלית: תכונה היא תכונה לא טריוויאלית אם היא מקיימת:.

Διαβάστε περισσότερα

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( ) עצים מאוזנים Lecture 5 of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds תזכורת: משפחת עצים נקראת מאוזנת אם ( h. = (log עצי -3 ועצי דרגות עצי AVL הם עצים מאוזנים. עצי 3- מהווים דוגמא

Διαβάστε περισσότερα

תורת הגרפים - סימונים

תורת הגרפים - סימונים תורת הגרפים - סימונים.n = V,m = E בהינתן גרף,G = V,E נסמן: בתוך סימוני ה O,o,Ω,ω,Θ נרשה לעצמנו אף להיפטר מהערך המוחלט.. E V,O V + E כלומר, O V + E נכתוב במקום אם כי בכל מקרה אחר נכתוב או קשת של גרף לא

Διαβάστε περισσότερα

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים ( תכנון ניסויים כאשר קיימת אישביעות רצון מהמצב הקיים (למשל כשלים חוזרים בבקרת תהליכים סטטיסטית) נחפש דרכים לשיפור/ייעול המערכת. ניתן לבצע ניסויים על גורם בודד, שני גורמים או יותר. ניסויים עם גורם בודד: נבצע

Διαβάστε περισσότερα

אלגברה מודרנית פתרון שיעורי בית 6

אלגברה מודרנית פתרון שיעורי בית 6 אלגברה מודרנית פתרון שיעורי בית 6 15 בינואר 016 1. יהי F שדה ויהיו q(x) p(x), שני פולינומים מעל F. מצאו פולינומים R(x) S(x), כך שמתקיים R(x),p(x) = S(x)q(x) + כאשר deg(q),deg(r) < עבור המקרים הבאים: (תזכורת:

Διαβάστε περισσότερα

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות 1. מצאו צורה דיסיונקטיבית נורמלית קנונית לפסוקים הבאים: (ג)

Διαβάστε περισσότερα

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות 25 בדצמבר 2016 תזכורת: תהי ) n f ( 1, 2,..., פונקציה המוגדרת בסביבה של f. 0 גזירה חלקית לפי משתנה ) ( = 0, אם קיים הגבול : 1 0, 2 0,..., בנקודה n 0 i f(,..,n,).lim

Διαβάστε περισσότερα

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx דפי נוסחאות I גבולות נאמר כי כך שלכל δ קיים > ε לכל > lim ( ) L המקיים ( ) מתקיים L < ε הגדרת הגבול : < < δ lim ( ) lim ורק ( ) משפט הכריך (סנדוויץ') : תהיינה ( ( ( )g ( )h פונקציות המוגדרות בסביבה נקובה

Διαβάστε περισσότερα

השאלות ידי מצביעים לילדים.

השאלות ידי מצביעים לילדים. מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 4 השאלות 1. כתבו פונקציה לא רקורסיבית שמדפיסה ב- Postorder את כל הנתונים המאוכסנים בעץ בינארי T. הפונקציה אינה צריכה להיות תלויה במימוש העץ T. הניחו שנתון

Διαβάστε περισσότερα

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד סמסטר: א' מועד: א' תאריך: יום ה' 0100004 שעה: 04:00 משך הבחינה: שלוש שעות חומר עזר: אין בבחינה שני פרקים בפרק הראשון 8 שאלות אמריקאיות ולכל אחת מהן מוצעות

Διαβάστε περισσότερα

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת תרגול 3 ניתוח לשיעורין תאריך עדכון אחרון: 27 בפברואר 2011. ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת חסמי זמן ריצה נמוכים יותר מאשר חסמים המתקבלים כאשר

Διαβάστε περισσότερα

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 5 שנכתב על-ידי מאיר בכור. חקירת משוואה מהמעלה הראשונה עם נעלם אחד = הצורה הנורמלית של המשוואה, אליה יש להגיע, היא: b

Διαβάστε περισσότερα

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 6 נושא: תחשיב הפסוקים: הפונקציה,val גרירה לוגית, שקילות לוגית 1. כיתבו טבלאות אמת לפסוקים הבאים: (ג) r)).((p q) r) ((p r) (q p q r (p

Διαβάστε περισσότερα

אלגברה לינארית (1) - פתרון תרגיל 11

אלגברה לינארית (1) - פתרון תרגיל 11 אלגברה לינארית ( - פתרון תרגיל דרגו את המטריצות הבאות לפי אלגוריתם הדירוג של גאוס (א R R4 R R4 R=R+R R 3=R 3+R R=R+R R 3=R 3+R 9 4 3 7 (ב 9 4 3 7 7 4 3 9 4 3 4 R 3 R R3=R3 R R 4=R 4 R 7 4 3 9 7 4 3 8 6

Διαβάστε περισσότερα

co ארזים 3 במרץ 2016

co ארזים 3 במרץ 2016 אלגברה לינארית 2 א co ארזים 3 במרץ 2016 ניזכר שהגדרנו ווקטורים וערכים עצמיים של מטריצות, והראינו כי זהו מקרה פרטי של ההגדרות עבור טרנספורמציות. לכן כל המשפטים והמסקנות שהוכחנו לגבי טרנספורמציות תקפים גם

Διαβάστε περισσότερα

מבני נתונים עצים שיעור 7

מבני נתונים עצים שיעור 7 בס ד מבני נתונים עצים שיעור 7 שי גולן כ ח בניסן, תשע ו 6 במאי 2016 תקציר בתרגול זה נתחיל לדון בעצים. נגדיר עצים כלליים ועצים בינאריים, ונציג את ההגדרות הבסיסיות בתחום. נתרגל הוכחת תכונות של עצים באמצעות

Διαβάστε περισσότερα

( n) ( ) ( ) שאלה 1: שאלה 2: שאלה 3: (n 5) = Θ. ב. אם f 1, f 2, g 1, g 2. .g 1 *g 2 = Ω(f 1 *f 2 ) , g. ג. ) n.n! = θ(n*2. n) f ( אז ד. אם ה. אם ו.

( n) ( ) ( ) שאלה 1: שאלה 2: שאלה 3: (n 5) = Θ. ב. אם f 1, f 2, g 1, g 2. .g 1 *g 2 = Ω(f 1 *f 2 ) , g. ג. ) n.n! = θ(n*2. n) f ( אז ד. אם ה. אם ו. נתונים מבני לקט שאלות ממבחנים - 0 - ניתוח סדרי גודל ב. שאלה 1: הוכיחו או הפריכו את הטענות הבאות ישירות על ידי שימוש בהגדרות 3 3 א. ) =Ω( log( ) =Ω( ) ( ) log(log ) = O ( 5) log (+ 5) = O() 6 ( 10 ) =Θ(

Διαβάστε περισσότερα

תרגיל 7 פונקציות טריגונומטריות הערות

תרגיל 7 פונקציות טריגונומטריות הערות תרגיל 7 פונקציות טריגונומטריות הערות. פתרו את המשוואות הבאות. לא מספיק למצוא פתרון אחד יש למצוא את כולם! sin ( π (א) = x sin (ב) = x cos (ג) = x tan (ד) = x) (ה) = tan x (ו) = 0 x sin (x) + sin (ז) 3 =

Διαβάστε περισσότερα

מבני נתונים מדעי המחשב שאלון: מועד ב' תשע"ו מדעי המחשב פתרון בחינת הבגרות. Java שאלה 1. blog.csit.org.

מבני נתונים מדעי המחשב שאלון: מועד ב' תשעו מדעי המחשב פתרון בחינת הבגרות. Java שאלה 1. blog.csit.org. 1 פתרון בחינת הבגרות פרק ראשון - )יסודות( Java שאלה 1 C# 6 Java שאלה 2 ב. פלט a a1 A A 4 + 5 = 9 4 + 5 = 9 n1 n2 n1 n2 8 + 9 = 17? 4? 5 4 8 5 9 3 :C# שאלה 2 פלט a a1 A A 4 + 5 = 9 4 + 5 = 9 n1 n2 n1 n2

Διαβάστε περισσότερα

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות אלגוריתמים חמדניים אלגוריתם חמדן, הוא כזה שבכל צעד עושה את הבחירה הטובה ביותר האפשרית, ולא מתחרט בהמשך גישה זו נראית פשטנית מדי, וכמובן שלא תמיד היא נכונה, אך במקרים רבים היא מוצאת פתרון אופטימאלי בתרגול

Διαβάστε περισσότερα

מבני נתונים מבחן מועד א' סמסטר חורף תשס"ו

מבני נתונים מבחן מועד א' סמסטר חורף תשסו TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון - מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצים: רן אל-יניב, נאדר בשותי מבני נתונים 234218-1 מבחן מועד א' סמסטר חורף תשס"ו

Διαβάστε περισσότερα

3-9 - a < x < a, a < x < a

3-9 - a < x < a, a < x < a 1 עמוד 59, שאלהמס', 4 סעיףג' תיקוני הקלדה שאלון 806 צריך להיות : ג. מצאאתמקומושלאיברבסדרהזו, שקטןב- 5 מסכוםכלהאיבריםשלפניו. עמוד 147, שאלהמס' 45 ישלמחוקאתהשאלה (מופיעהפעמיים) עמוד 184, שאלהמס', 9 סעיףב',תשובה.

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 13

מתמטיקה בדידה תרגול מס' 13 מתמטיקה בדידה תרגול מס' 13 נושאי התרגול: תורת הגרפים. 1 מושגים בסיסיים נדון בגרפים מכוונים. הגדרה 1.1 גרף מכוון הוא זוג סדור E G =,V כך ש V ו E. V הגרף נקרא פשוט אם E יחס אי רפלקסיבי. כלומר, גם ללא לולאות.

Διαβάστε περισσότερα

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t. תכנון אלגוריתמים 2016 עבודה 1 פתרון שאלה 1 נזכר כי בגרף (E G, =,V) עבור שני קודקודים d(u, (v,u, v הוא אורך מסלול קצר ביותר מ u ל v. אם אין מסלול מ u ל.d(u, v) =,v נתונות שתי בעיות. בעיה א' מופע: גרף מכוון

Διαβάστε περισσότερα

הגדרה: מצבים k -בני-הפרדה

הגדרה: מצבים k -בני-הפרדה פרק 12: שקילות מצבים וצמצום מכונות לעי תים קרובות, תכנון המכונה מתוך סיפור המעשה מביא להגדרת מצבים יתי רים states) :(redundant הפונקציה שהם ממלאים ניתנת להשגה באמצעו ת מצבים א חרים. כיוון שמספר רכיבי הזיכרון

Διαβάστε περισσότερα

מבני נתונים מבחן מועד א' סמסטר אביב תשס"ו

מבני נתונים מבחן מועד א' סמסטר אביב תשסו TECHNION ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצה: אהוד ריבלין מבני נתונים 234218 1 מבחן מועד א' סמסטר אביב תשס"ו מתרגלים: איתן

Διαβάστε περισσότερα

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס: תאריך הבחינה:... נובה פנדינה שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:..00 מספר הקורס:. סמסטר: א' מועד: שנה: שלוש שעות משך הבחינה: ללא חומר עזר חומר עזר: ב' הנחיות חשובות: רצוי לפתור את

Διαβάστε περισσότερα

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ!

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ! מיון ערימה (Heapsort) מבני נתונים חלק I מיון מבני נתונים ד"ר ערן לונדון. הגדרת ערימה ערימה (בינארית) הינה מערך אשר ניתן להציגו כמו עץ בינארי מלא או כמעט מלא כאשר כל קודקוד בעץ מתאים לתא במערך. העץ הינו

Διαβάστε περισσότερα

משפטי בקרה ולולאות שעור מס. 3 כל הזכויות שמורות דר' דרור טובי המרכז האוניברסיטאי אריאל

משפטי בקרה ולולאות שעור מס. 3 כל הזכויות שמורות דר' דרור טובי המרכז האוניברסיטאי אריאל משפטי בקרה ולולאות שעור מס. 3 דרור טובי דר' 1 כל הזכויות שמורות דר' דרור טובי המרכז האוניברסיטאי אריאל - הקדמה משפט התנאי if המשימה: ברצוננו לכתוב תוכנית המקבלת שני מספרים בסדר כל שהוא ולהדפיס אותם בסדר

Διαβάστε περισσότερα

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1 1 טורים כלליים 1. 1 התכנסות בהחלט מתכנס. מתכנס בהחלט אם n a הגדרה.1 אומרים שהטור a n משפט 1. טור מתכנס בהחלט הוא מתכנס. הוכחה. נוכיח עם קריטריון קושי. יהי אפסילון גדול מ- 0, אז אנחנו יודעים ש- n N n>m>n

Διαβάστε περισσότερα

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

קשר-חם : לקידום שיפור וריענון החינוך המתמטי הטכניון - מכון טכנולוגי לישראל המחלקה להוראת הטכנולוגיה והמדעים "קשר-חם" : לקידום שיפור וריענון החינוך המתמטי נושא: חקירת משוואות פרמטריות בעזרת גרפים הוכן ע"י: אביבה ברש. תקציר: בחומר מוצגת דרך לחקירת

Διαβάστε περισσότερα

דוגמה 1: SELECT studid, grade, grade*1.1 FROM tblgrades

דוגמה 1: SELECT studid, grade, grade*1.1 FROM tblgrades 1 שדות בשאילתה המכילים ביטויים I שדות מחושבים לפעמים רוצים להפיק מידע שאינו קיים בטבלאות המסד באופן ישיר, אבל אפשר לחשב אותו מתוך הטבלאות. דוגמה 1: חישוב פקטור על ציונים: תלמידי הכיתה קיבלו ציון נמוך בבחינה

Διαβάστε περισσότερα

מבני נתונים ויעילות אלגוריתמים

מבני נתונים ויעילות אלגוריתמים חידה לחימום בסל מקש יש צמר. כדורי 00 שני שחקנים משחקים בתורות: כל שחקן, בתורו, צריך להוציא כמות כלשהי של כדורי צמר מהסל לפחות כדור אחד, אך לא יותר ממחצית מכמות כדורי הצמר שבסל. מי שלא יכול לעשות מהלך (מתי

Διαβάστε περισσότερα

מבני נתונים (234218) 1

מבני נתונים (234218) 1 מבני נתונים (234218) 1 חומר עזר לבחינה 13 בספטמבר 2016 שימו לב: מותר לצטט טענות המופיעות בדף זה ללא הוכחה. כל טענה אחרת, שאינה מופיעה באופן מפורש, יש לנמק באופן מלא. נימוקים מהצורה "בדומה לטענה שבחומר

Διαβάστε περισσότερα

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m. פתרון למבחן במבני נתונים, מועד א', קיץ 2005 חלק א' שאלה 1 א. רכיב הקשירות החזק של קודקוד x בגרף מכוון הינו אוסף כל הקודקודים y שמקימים שיש מסלול מ- x ל- y וכן מסלול מy ל- x. טעויות נפוצות שכחו לכתוב שזה

Διαβάστε περισσότερα

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

s קמ קמש מ - A A מ - מ - 5 p vp v= את זמני הליכת הולכי הרגל עד הפגישות שלהם עם רוכב האופניים (שעות). בגרות ע מאי 0 מועד קיץ מבוטל שאלון 5006 מהירות - v קמ"ש t, א. () נסמן ב- p נכניס את הנתונים לטבלה מתאימה: רוכב אופניים עד הפגישה זמן -

Διαβάστε περισσότερα

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון. Charles Augustin COULOMB (1736-1806) קולון חוק חוקקולון, אשרנקראעלשםהפיזיקאיהצרפתישארל-אוגוסטיןדהקולוןשהיהאחדהראשוניםשחקרבאופןכמותיאתהכוחותהפועלים ביןשניגופיםטעונים. מדידותיוהתבססועלמיתקןהנקראמאזניפיתול.

Διαβάστε περισσότερα

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא ערמות פיבונאצ'י Operation Linked List Binary Heap Binomial Heap Fibonacci Heap Relaxed Heap make-heap 1 1 1 1 1 is-empty 1 1 1 1 1 insert 1 log

Διαβάστε περισσότερα

TECHNION Israel Institute of Technology, Faculty of Mechanical Engineering מבוא לבקרה (034040) גליון תרגילי בית מס 5 ציור 1: דיאגרמת הבלוקים

TECHNION Israel Institute of Technology, Faculty of Mechanical Engineering מבוא לבקרה (034040) גליון תרגילי בית מס 5 ציור 1: דיאגרמת הבלוקים TECHNION Iael Intitute of Technology, Faculty of Mechanical Engineeing מבוא לבקרה (034040) גליון תרגילי בית מס 5 d e C() y P() - ציור : דיאגרמת הבלוקים? d(t) ו 0 (t) (t),c() 3 +,P() + ( )(+3) שאלה מס נתונה

Διαβάστε περισσότερα

םינותנ ינבמ 3 ליגרתמ תולאשל המוד תולאש טסל תונורתפ תולאשה

םינותנ ינבמ 3 ליגרתמ תולאשל המוד תולאש טסל תונורתפ תולאשה מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 3 השאלות נתונה רשימה משורשרת L המכילה n מספרים שלמים חיוביים מתחום לא חסום כאשר 1 k n = 2 עבור > 0 k כלשהו. נניח שהמספרים ברשימה מקיימים את התכונה הבאה:

Διαβάστε περισσότερα

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

מודלים חישוביים פתרון תרגיל 5 מודלים חישוביים פתרון תרגיל 5 כתוב אוטומט דטרמיניסטי לשפות הבאות מעל הא"ב.Σ={,} א. *Σ. q, ב. q, ג. {ε}, q, q ד. } = 3 {w w mod, q, q,, ה. ''} {w w does not contin the sustring q 4 q 3 q q כתוב אוטומט דטרמיניסטי

Διαβάστε περισσότερα

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט. פרק סיבוכיות פרק סיבוכיות המושג יעילות מהו? במדעי המחשב היעילות נמדדת בעזרת מדדי סיבוכיות, החשובים שבהם: של אלגוריתמים יעילותם תוכן הפרק: יעילות מהי (זיכרון וזמן, זמן ריצה T( של אלגוריתם מהו, מהם case,

Διαβάστε περισσότερα

אלגברה ליניארית 1 א' פתרון 7

אלגברה ליניארית 1 א' פתרון 7 אלגברה ליניארית 1 א' פתרון 7 2 1 1 1 0 1 1 0 1 0 2 1 1 0 1 0 2 1 2 1 1 0 2 1 0 1 1 3 1 2 3 1 2 0 1 5 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 4 0 0 0.1 עבור :A לכן = 3.rkA עבור B: נבצע פעולות עמודה אלמנטריות

Διαβάστε περισσότερα

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז פתרון תרגיל בית 6 מבוא לתורת החבורות 88-211 סמסטר א תשע ז הוראות בהגשת הפתרון יש לרשום שם מלא, מספר ת ז ומספר קבוצת תרגול. תאריך הגשת התרגיל הוא בתרגול בשבוע המתחיל בתאריך ג טבת ה תשע ז, 1.1.2017. שאלות

Διαβάστε περισσότερα

מבני נתונים. אחרי שלב זה המשיכו והריצו את מיון מהיר על המערך. תארו את כל שלבי הרקורסיה, אך עתה אין צורך להיכנס לתיאור הריצה של.

מבני נתונים. אחרי שלב זה המשיכו והריצו את מיון מהיר על המערך. תארו את כל שלבי הרקורסיה, אך עתה אין צורך להיכנס לתיאור הריצה של. מבני נתונים תרגיל 2 פתרונות מיון מהיר 1. הריצו את השיטה partition על המערך הבא. הראו את שלבי הריצה השונים. 6, 10, 20, 4, 2, 15, 5, 99, 12, 1 אחרי שלב זה המשיכו והריצו את מיון מהיר על המערך. תארו את כל

Διαβάστε περισσότερα

מודלים חישוביים תרגולמס 7

מודלים חישוביים תרגולמס 7 מודלים חישוביים תרגולמס 7 13 באפריל 2016 נושאי התרגול: מכונת טיורינג. 1 מכונת טיורינג נעבור לדבר על מודל חישוב חזק יותר (ובמובן מסוים, הוא מודל החישוב הסטנדרטי) מכונות טיורינג. בניגוד למודלים שראינו עד

Διαβάστε περισσότερα

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל תכנון אלגוריתמים, אביב, תרגול מס' תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (6..(CLR ראשית נראה דוגמא:. A, A, A, A נסמן את גודל המטריצות בסדרה ע"י סדרת גדלים כאשר, p 5 5 p היא

Διαβάστε περισσότερα

Hash Tables (המשך) ערבול (Hashing)

Hash Tables (המשך) ערבול (Hashing) מילון עם מפתחות שלמים Lecture of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds טבלאות ערבול הפעולות הבסיסיות של מילון הן כזכור חיפוש, הכנסה, והוצאה. אם המפתחות מספרים שלמים בתחום

Διαβάστε περισσότερα

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A ) הסתברות למתמטיקאים c ארזים 3 במאי 2017 1 תוחלת מותנה הגדרה 1.1 לכל משתנה מקרי X אינטגרבילית ותת סיגמא אלגברה G F קיים משתנה מקרי G) Y := E (X המקיים: E (X1 A ) = E (Y 1 A ).G מדיד לפי Y.1.E Y

Διαβάστε περισσότερα

Domain Relational Calculus דוגמאות. {<bn> dn(<dn, bn> likes dn = Yossi )}

Domain Relational Calculus דוגמאות. {<bn> dn(<dn, bn> likes dn = Yossi )} כללים ליצירת נוסחאות DRC תחשיב רלציוני על תחומים Domain Relational Calculus DRC הואהצהרתי, כמוSQL : מבטאיםבורקמהרוציםשתהיההתוצאה, ולא איךלחשבאותה. כלשאילתהב- DRC היאמהצורה )} i,{ F(x 1,x

Διαβάστε περισσότερα

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r ל' ' פונקציות פרימיטיביות רקורסיביות חישוביות הרצאה 4 האם כל פונקציה מלאה היא פרימיטיבית רקורסיבית? לא נראה שתי הוכחות: פונקציות רקורסיביות (המשך) זיהוי שפות ע''י מכונות טיורינג הוכחה קיומית: קיימות פונקציות

Διαβάστε περισσότερα

מבוא למדעי המחשב מבוא למדעי המחשב מ' - תירגול 14

מבוא למדעי המחשב מבוא למדעי המחשב מ' - תירגול 14 מבוא למדעי המחשב תירגול 14: נושאים מתקדמים 1 מה היה שבוע שעבר? Backtracking 2 תוכנייה עץ רקורסיה העברת פרמטרים ל- main שאלות ממבחן 3 עץ רקורסיה 4 עץ הקריאות של פונקציה רקורסיבית על מנת לחקור התנהגות של

Διαβάστε περισσότερα

אוסף שאלות מס. 3 פתרונות

אוסף שאלות מס. 3 פתרונות אוסף שאלות מס. 3 פתרונות שאלה מצאו את תחום ההגדרה D R של כל אחת מהפונקציות הבאות, ושרטטו אותו במישור. f (x, y) = x + y x y, f 3 (x, y) = f (x, y) = xy x x + y, f 4(x, y) = xy x y f 5 (x, y) = 4x + 9y 36,

Διαβάστε περισσότερα

קורס: מבוא למיקרו כלכלה שיעור מס. 17 נושא: גמישויות מיוחדות ושיווי משקל בשוק למוצר יחיד

קורס: מבוא למיקרו כלכלה שיעור מס. 17 נושא: גמישויות מיוחדות ושיווי משקל בשוק למוצר יחיד גמישות המחיר ביחס לכמות= X/ Px * Px /X גמישות קשתית= X(1)+X(2) X/ Px * Px(1)+Px(2)/ מקרים מיוחדים של גמישות אם X שווה ל- 0 הגמישות גם כן שווה ל- 0. זהו מצב של ביקוש בלתי גמיש לחלוטין או ביקוש קשיח לחלוטין.

Διαβάστε περισσότερα