תוכן עניינים 13-3 מבחן בתכנות ב- Cא, סמסטר קיץ, מועד ב', מבחן בתכנות ב- Cא, סמסטר קיץ, מועד א', מבחן בתכנות ב- Cא, סמסטר קיץ, מו

גודל: px
התחל להופיע מהדף:

Download "תוכן עניינים 13-3 מבחן בתכנות ב- Cא, סמסטר קיץ, מועד ב', מבחן בתכנות ב- Cא, סמסטר קיץ, מועד א', מבחן בתכנות ב- Cא, סמסטר קיץ, מו"

תמליל

1 תוכן עניינים 13-3 מבחן בתכנות ב- Cא, סמסטר קיץ, מועד ב', מבחן בתכנות ב- Cא, סמסטר קיץ, מועד א', מבחן בתכנות ב- Cא, סמסטר קיץ, מועד א', מבחן בתכנות ב- Cא, סמסטר א', מועד א', מבחן בתכנות ב- Cא, סמסטר א', מועד ב', מבחן בתכנות ב- Cא, סמסטר א', מועד א', 2016 באדיבות רכזות בנק הבחינות והסיכומים

2 תכנות ב- Cא חוברת מבחנים זו מובאת אליכם באדיבות מדור אקדמיה של האגודה הסטודנטיאלית בעיות אקדמיות? מועד ג'? וועדת משמעת? מילואים? חוברת מבחנים? הפסקת לימודים? סיכומים? מדור אקדמיה פה בשבילך שירותי המדור: סיוע אקדמי ליווי וייצוג בבתי דין משמעתיים מאגר בחינות משנים קודמות מאגר סיכומים של סטודנטים ספריית השאלה במחירים סטודנטיאליים קורסי הכנה תמיכה במשרתי מילואים בית הסטודנט, קומה 1, חדר 161 באדיבות רכזות בנק הבחינות והסיכומים

3 שאלה )12 1 נקודות( בשאלה הזאת הניחו כי גודל int וגודל כל מצביע במערכת הוא 4 בייט. בכל סעיף ענה מה יודפס על המסך אחרי ביצוע הפונקציה. )כל סעיף 2 נקודות( void ex1(){ char* a = "abcdefghijklmnopq"; printf("%c", a[a[strlen(a)]]); void ex2(){ char* a = "2016"; printf("%c", a[a[0] - a[2] + a[1]]); void ex3(){ char* a = "abcdefghijklmnopq"; printf("%c", (a + 3)[1]); struct cab{ int c; char a[20]; int b; ; void ex4(){ struct cab a = { 1, "abcdefghijklmnopq", 2; printf("%c", (a.a + 3)[1]); a b q 0 שגיאה או ערך זבל. אף תשובה לא נכונה שגיאה או ערך זבל. אף תשובה לא נכונה. b d e k q אף תשובה לא נכונה. b d e i 0 אף תשובה לא נכונה

4 2 #include <stdio.h> int nextfree(int** arr, int size, int *pi, int *pj){ static int i, j; if(i==size){ i=j=0; return 0; if(!arr[i][j]){ *pi = i; *pj = j; return 1; if(j==size){ j=0; i++; else j++; return nextfree(arr, size, pi, pj); שאלה ( 2 18 נקודות( נתונה התכנית הבאה: int freecell(int **arr, int size, int i, int j){ if(i==-1 i==size j==-1 j==size arr[i][j]) return 0; return 1; void print(int **arr, int size){ int i, j; for (i=0; i<size; i++){ for(j=0; j<size; j++) printf("%3d", arr[i][j]); putchar('\n'); putchar('\n'); void zero(int **arr, int size){ int i, j; for(i=0; i<size; i++) for(j=0; j<size; j++) arr[i][j]=0; 3

5 3 void what(int **arr, int size, int i, int j){ int static count; arr[i][j]= ++count; if(freecell(arr, size, i-1, j)) what(arr, size, i-1,j); else if(freecell(arr, size, i, j+1)) what(arr, size, i, j+1); else if (freecell(arr, size, i+1, j)) what(arr, size, i+1, j); else if(freecell(arr, size, i, j-1)) what(arr, size, i, j-1); else if(nextfree(arr, size, &i, &j)) what(arr, size, i, j); else count = 0; void main(){ int *arr[5], i, a[5][5]={0; for (i=0; i<5; i++) arr[i]=a[i]; what(arr, 5, 0, 0); print(arr, 5); // 1 zero(arr, 5); what(arr, 5, 4, 4); print(arr, 5); // 2 zero(arr, 5); what(arr, 5, 2, 2); print(arr, 5); // 3 פלט פלט פלט סעיף א'. )12 נקודות( מה הפלט של התכנית הנ"ל? סעיף ב'. )6 נקודות( עבור המערך arr בגודל sizexsize והמצביעים pj ו- pi הסבר בקצרה מה יעודה של הקריאה pj) nextfree(arr, size, pi, )לפרט מה תפקידם של pi ו- pj ומה בדיוק הערך המוחזר( 4

6 4 שאלה ( 3 22 נקודות( typedef struct node{ int val; struct node* next; Node; כדי לממש רשימה מקושרת נתונה ההגדרה הבאה: רשימה מקושרת ממוינת על פי ראש היא רשימה שבה עבור כל זוג ערכים ברשימה, המופע הראשון של ערך מסוים נמצא לפני המופע הראשון של ערך גדול ממנו. לדוגמא: lst1 היא רשימה ממוינת על פי ראש. סומנו בכוכבית המופעים הראשונים של הערכים שברשימה. lst * * * * * lst2 אינה רשימה ממוינת על פי ראש. בכוכבית המופעים הראשונים של הערכים שברשימה. שימו לב כי המופע הראשון של 4 הינו אחרי המופע הראשון של 5. lst * * * 1 כתבו פונקציה head) int issortedbyhead(node* הרשימה ממוינת על פי ראש ו- 0 אחרת. אשר מקבלת רשימה מקושרת ומחזירה אם אין לשנות את הרשימה שהתקבלה אין להגדיר מבנה נתונים אחר מלבד הרשימה הנתונה. 5

7 5 שאלה )25 4 נקודות( סעיף א'. )10 נקודות( כתבו פונקציה root) void mirror(struct item* המקבלת מצביע לשורש עץ בינארי או עץ טרינארי ומעדכנת אותו להיות עץ הראי שלו. אין להשתמש בפונקצית עזר. כתבו ופרטו את ההגדרה של struct item שיכולה להתאים גם לעץ בינאיר וגם לעץ טרינארי. סעיף ב'. )12 נקודות( הגדרה: עץ A זהה לעץ B אם ורק אם הם זהים במבנה שלהם וגם הערך הנמצא בקודקוד a בעץ A זהה לערך הנמצא בקודקוד המקביל לו בעץ B וזאת לכל קודקודי העצים. כתבו פונקציה root2) int ismirror(struct item* root1, struct item* המקבלת שני עצים, עץ 1 ועץ 2, ובודקת האם עץ הראי של עץ 1 זהה לעץ 2 המקורי. ניתן - אך לא חובה - להשתמש בפונקציות שכתבתם בסעיף הקודם אף אם לא כתבתם אותה, אין להשתמש בפונקצית עזר נוספת. שימו לב כי לא מקבלים עץ חיפוש אלא עץ רגיל - כלומר בהינתן ערך של קודקוד, ערכו של בנו הימיני יכול להיות גדול ממנו קטן ממנו או שווה לו. וכך גם לגבי שאר בניו. סעיף ג'. )3 נקודות( כתבו הגדרה של מבנה struct itemplus בו הייתם משתמשים לו סעיף א' היה על עץ בו לכל קודקוד יש מספר בנים הנקבע בזמן הקומפילציה ואת הרעיון הכללי של כיצד הייתם הופכים אותו לעץ הראי שלו. 6

8 6 שאלה ( 5 25 נקודות( לרשת "WiSki" יש בתי מלון במספר אתרי סקי באירופה, הרשת מציעה חופשת לשבוע בשיטת "הכול כלול". לקראת סוף העונה, החליטו מנהלי הרשת להציע את החדרים שלא הוזמנו בהנחה של 50%. עבור כל בית מלון ברשת, שמור קובץ במבנה הבא: - 25 תווים. בשורה הראשונה: שם בית המלון לאחר מכן, כל שורה בקובץ מכילה את הנתונים הבאים: 6 ספרות - תאריך במבנה yymmdd ספרה אחת - מספר אנשים בחדר 5 ספרות. - מחיר לשבוע בשקלים השורות ממוינות לפי תאריך, אחר כך לפי מספר אנשים בחדר ואחר כך לפי מחיר. בקובץ לדוגמא ניתן לראות כי יש חדרים פנויים בתאריך 17/2/2016 עבור 4 2, ו- 6 אנשים בחדר, ובתאריך 24/2/2016 יש חדרים פנויים עבור 3 1, ו -5 אנשים, וכך הלאה... ההזמנות לחדרים לכל בתי המלון מרוכזות בקובץ אחד. כל שורה בקובץ ההזמנות היא במבנה הבא: 25 תווים - שם בית המלון 15 תווים - שם הלקוח - 9 תווים תעודת זהות )yymmdd - 6 תווים )במבנה תאריך מספר אנשים בחדר - ספרה אחת. קובץ ההזמנות ממוין לפי תאריך ולאחר מכן, לפי מספר אנשים בחדר. חברת "Wiski" מעוניינת לקבל דיווח על ההזמנות שאושרו )כלומר: יש עבורן חדר פנוי התואם לדרישות(, ועל ההזמנות שלא אושרו. הדיווח יישמר בקבצים במהנה הבא: מבנה קובץ ההזמנות שאושרו : - 15 תווים. שם הלקוח - 9 תווים ת.ז. לקוח - 25 תווים. שם בית המלון - 6 תווים. תאריך 5 ספרות. - מחיר מבנה קובץ ההזמנות שנדחו : - 15 תווים. שם הלקוח - 9 תווים. ת.ז. לקוח - 25 תווים. שם בית המלון - 6 תווים. תאריך כתבו פונקציה denied) int hotel(file* arr[], int size, FILE* orders, char* accept, char* המקבלת כפרמטרים מערך של מצביעים לקבצים של המלונות ואת גודלו, מצביע לקובץ ההזמנות, שם קובץ ההזמנות שהתקבלו ושם קובץ ההזמנות שנדחו. הפונקציה תחזיר את מספר הבקשות שהתקבלו )בכל מקרה של שגיאה הפונקציה תחזיר הערך 1-(. שימו לב! בכל אחד מהקבצים, אין תווים בין נתון לנתון. אין לעבור על קובץ יותר מפעם אחת. אין להעתיק קובץ למבנה נתונים אחר )מערך, רשימה משורשרת, עץ,קובץ אחר...(. Val Thorens "L'altitude" : 7

9 7 רשימת פונקציות קלט/פלט: INPUT/OUTPUT FUNCTIONS PROTOTYPES Open/Close a file FILE *fopen( char *filename, char *mode ); int fclose(file *stream); Repositions the file pointer to the beginning of a file void rewind( FILE *stream ); Get/put a character int fgetc( FILE *stream ); int fputc( int c, FILE *stream ); Get/put a string char *fgets( char *string, int n, FILE *stream ); int fputs( const char *string, FILE *stream ); Formatted Input/Output int fscanf( FILE *stream, const char *format [, argument ]... ); int sscanf( const char *string, const char *format [, argument ]... ); int fprintf( FILE *stream, const char *format [, argument ]...); int sprintf( char *string, const char *format [, argument ]...); Remove a file int remove(const char* filename); Rename a file int rename(const char* oldname, const char*newname); ב ה צ ל ח ה! 8

10 8

11 9

12 10

13 11

14 12

15 13

16 14

17 אוניברסיטת בן גוריון בנגב מספרנבחן : תאריךהמבחן:כ"באדרא'תשע"ו שמותהמורים:ציוןסיקסיק מבחןב: תכנות ב- C א' מס'הקורס : מיועדלתלמידי : הנדסה שנה תשע"ו סמ' א' מועד ב' משךהבחינה : 3 שעות חומרעזר : דףפוליואחדלאמודפס ולאמצולם. איןלהשתמשבמחשבון. במבחן זה 5 שאלות רשמו תשובותיכם בדפי התשובות בלבד מחברת הטיוטה לא תימסר לבדיקה בסיום המבחן נאסוףרק את דפי התשובות מותר להגדיר פונקציות עזר בכל השאלות,אלא אם נאמראחרת. כתבו קוד קריא והקפידו על אינדנטציה והערות (בעברית). ב ה צ ל ח ה! 1

18 2 שאלה (18 1 נקודות) הפונקציה *sml) int,בודקתאם containmirror(char*big, char המחרוזת sml מוכלת במחרוזת big כאשרהתווים הראשוניםשלה מופיעים באותוהסדר, ושאר התוויםבסדר הפוך. הפונקציה מחזירה את המיקוםשל תחילת המחרוזת המוכלת ב- big,אם המחזורת אינה מוכלת, הפונקציה מחזירה 1-. למשל הקריאהשבתכנית הראשיתהבאה מחזירה 6. שימולב, כי לאידועכמה תוויםהם באותוהסדר וכמהבסדר הפוך.. השלימו בדף התשובות את הקטעים המסומנים ב-?? n?? int containmirror(char *big, char *sml) { int lenb, lens, indexb, indexs, start, num_equal; lenb = strlen(big); lens = strlen(sml); for(indexb=0;?? 1?? ; indexb++) { num_equal = 0; start = indexb; indexs = 0; while (big[indexb]==sml[indexs]) { num_equal++; if (?? 2?? ) return?? 3?? ; indexb++; indexs++; indexs =?? 4?? ; while (?? 5?? ){ num_equal++;?? 6?? ;?? 7?? ;?? 8?? ; indexb = indexb - num_equal;?? 9?? ; void main(){ char s[ ]= "abcde", b[ ]= "jkotababedcm"; printf("%d\n", containmirror(b, s)) ; 2

19 3 #include <stdio.h> void what2(int* arr, int from, int to){ int temp, f, t; f = from; t = to; temp = arr[from]; (18 נקודות) שאלה 2 נתונה התכנית הבאה: while (from < to){ while ((arr[to] >= temp) && (from < to)) to--; if (from!= to){ arr[from] = arr[to]; from++; while ((arr[from] <= temp) && (from < to)) from++; if (from!= to){ arr[to] = arr[from]; to--; arr[from]=temp; printf("temp= %d\n",temp); if ( f < from-1) what2(arr, f, from-1); if ( t > from+1) what2(arr, from+1, t); void what1(int* array, int size){ what2(array, 0, size - 1); void main(){ int i, numbers[]={9,10,3,4,8,2,16,12,7,1,14,20,2,5,10; what1(numbers, 15); for (i = 0; i < 15; i++) printf("%d ", numbers[i]); סעיף א'. (12 נקודות) מה הפלטשל התכנית הנ"ל? סעיף ב'. (2 נקודות) הסבירובקצרהמה תפקידושל המשתנה temp בפונקציה? what2 סעיףג'. (2 נקודות) הסבירו במשפטאחדמה יעודהשל הפונקציה? what1 סעיף ד'. (2 נקודות) האלגוריתם של הפונקציה what2 מזכיר פונקציה שלמדנו.מהי? 3

20 4 שאלה ) 3 22 נקודות) כדילממש רשימה מקושרת נתונהההגדרה הבאה: typedef struct node{ int val; struct node* next; Node; כתבו פונקציה del) void skipdel(node* head, int skip, int אשר מקבלת כפרמטרים.del ומספרשלם skip מצביע לעוגן רשימה מקושרת,מספר שלם head הפונקציה משנה אתהרשימה עלידי שמירת skip איברים ברשימה ומחיקת del האיברים הבאים וחוזרת חלילה על הפעולות. לדוגמא עבור 2 = del,2= skip והרשימה הבאה: 8<-7<-6<-5<-4<-3<-2<-1 תישמר הרשימה הבאה: 6<-5<-2<-1. דוגמא נוספת: עבור =1 skip del =3, והרשימההבאה: 1->2->3->4->5->6->7 תישמר הרשימה הבאה: 5<-1. שימולבשטפלתםבמקרי קצה ושהפונקציה תעבוד עבורכל שילוב של פרמטרים. ניתן להניח כי.skip>0,del>0 אין להגדיר מבנה נתונים אחר מלבד הרשימה הנתונה. אין ליצור מבנים חדשים. שאלה 4 (20 נקודות) כדילממש עץ בינארי נתונהההגדרה הבאה: typedef struct node{ int val; struct node *left, *right; Node; כתבו פונקציה num2) int connected(struct Node* root, int num1, int המקבלת שורששלעץ בינארי ושני ערכים שלמים num1 ו- num2. הפונקציה תחזיר 1 אםקייםבעץ תת-עץ שהשורש שלו מכילאתהערך num1 ואחד הצאצאים מכיל את הערךnum2 אחרת הפונקציה תחזיר 0. אין לשנות אתהעץ שהתקבל. אין להגדיר מבנה נתונים אחר מלבדהעץ הנתון. אין להשתמש בפונקציתעזר. מותרלהגדיר משתנה סטטי. 4

21 5 שאלה (25 5 נקודות) רשת בתיהמרקחת "קפ-סי-לה"מבצעת ספירת מלאי של התרופותבכל רבעון, במהלך ספירת המלאי מוציאיםאת כל התרופות שפג תוקפן מהמלאי.מנהלי הרשת מעונייניםלדעת את כמות התרופות שנמכרו ואת כמות התרופותשפג תוקפן מהמלאי. נתוניכל התרופות הנמכרות ברשת שמורים בקובץ, כל שורה בקובץ מכליה את הנתונים הבאים: שם התרופה 25 תווים. שם היצרן 20 תווים. לכלאחת מהתרופות שבמאגר, עבורכל רבעון, קיים קובץ ששמו מורכב משם התרופה,שנה וחודש במבנההבא:.txt חודששנה שם התרופה לדוגמא: acamol1601.txt (שם התרופה acamol,שנה 2016,חודשינואר ). הקובץ מכיל את נתוני התרופהבמאגר ממוינים לפי תאריך תוקף, כאשר עבורכל תאריך כזה שומרים אתהכמות שנרכשה והכמותשנמכרה. כל שורה בקובץ התרופה מכילה את הנתונים הבאים: תאריך תוקף במבנה - yymmdd 6 ספרות. הכמות שנרכשה (עבור התאריך הנ"ל) - 4 ספרות. - 4 ספרות. (כמות המכירה) הכמות שנמכרה כתבו פונקציה date) int capc_la(file *medicine, char *sales, int המקבלת כפרמטרים מצביע לקובץ התרופות,שם קובץ המכירות,ותאריך (שלם של 4 ספרות במבנה.(yymm הפונקציה עבור כלאחת מהתרופותבמאגר תיצור קובץ חדש ששמו מורכבמשם התרופה ומהתאריך date.הקובץיכיל רק את התרופות שנשארו במלאי (שלא פג תוקפן) עבור תרופות שנשארו במלאי צריך להחסיר את הכמותשנמכרה מהכמות שנרכשה ובכמות שנמכרה יוצבהערך 0. בנוסף עבורכל תרופה במאגר,תירשם שורה בקובץ ששמו במחרוזת sales במבנה הבא: - 25 תווים שם התרופה הכמות שנמכרה - 6 ספרות הכמות שיצאה מהמלאי - 6 ספרות (תרופותשפג תוקפן) לדוגמא: עבור התרופה,acamol והתאריך 1604 (אפריל 2016),נוצר קובץ חדש המכיל רקאת התרופותשלא פג תוקפן כאשר הכמות במלאי מתעדכנת בהתאם והכמות של המכירה היא 0. השורהבקובץ המכירות acamol1601.txt acamol1604.txt , 250, , 300, ,1050, , 450, , 300, , 900, , 250, , 300, , 560, , 186, , 800, , 250, , 300, , 560, 0 : acamol, 1408, 942 : : סה"כ הכמות שיצאה מהמלאי סה"כ כמות המכירות שימו לב! הפונקציה תחזיר 1 ובכל מקרה שלשגיאה היא תחזיר 0. רבעונים מתחילים בחודשים ,04,01, בכלאחד מהקבצים,מופיע פסיק בין נתון לנתון. אין לעבור על קובץ יותרמפעםאחת. אין להעתיק קובץ למבנה נתוניםאחר (מערך, רשימה משורשרת,עץ,קובץאחר...). 5

22 6 רשימת פונקציות קלט/פלט: INPUT/OUTPUT FUNCTIONS PROTOTYPES Open/Close a file FILE *fopen( char *filename, char *mode ); int fclose(file *stream); Repositions the file pointer to the beginning of a file void rewind( FILE *stream ); Get/put a character int fgetc( FILE *stream ); int fputc( int c, FILE *stream ); Get/put a string char *fgets( char *string, int n, FILE *stream ); int fputs( const char *string, FILE *stream ); Formatted Input/Output int fscanf( FILE *stream, const char *format [, argument ]... ); int sscanf( const char *string, const char *format [, argument ]... ); int fprintf( FILE *stream, const char *format [, argument ]...); int sprintf( char *string, const char *format [, argument ]...); Remove a file int remove(const char* filename); Rename a file int rename(const char* oldname, const char*newname); ב ה צ ל ח ה! 6

23 7 int containmirror(char *big, char *sml) { int lenb, lens, indexb, indexs, start, num_equal; lenb = strlen(big); lens = strlen(sml); for(indexb=0; indexb<lenb ; indexb++) { num_equal = 0; start = indexb; indexs = 0; שאלה )18 1 נקודות( while (big[indexb]==sml[indexs]) { num_equal++; if ( num_equal==lens ) // או indexs == lens-1 return start ; indexb++; indexs++; indexs = lens-1 ; while ( big[indexb]==sml[indexs] ){ num_equal++; if ( num_equal==lens ) return start ; indexb++ ; indexs-- ; return -1 ; indexb = indexb - num_equal; temp= 9 temp= 5 temp= 1 temp= 2 temp= 3 temp= 8 temp= 12 temp= 10 temp= ( 18 נקודות( שאלה 2 סעיף א'. )12 נקודות( סעיף ב'. )2 נקודות( בפונקציה what2 כל האיברים שקטנים מ- temp יהיו בשמאלו והגדולים בימינו (pivot) סעיף ג'. )2 נקודות( הפונקציה what1 ממיינת את size האיברים של המערך array בסדר עולה. סעיף ד'. )2 נקודות( האלגוריתם של הפונקציה what2 מזכיר quick-sort שלמדנו בכיתה. 1

24 8 שאלה ( 3 22 נקודות( typedef struct node{ int val; struct node* next; Node; void skipdel1(node* head, int skip, int del){ Node *last; int i; while (head){ for (i = 0; i < skip && head; i++){ last = head; head = head->next; for (i = 0; i < del && head; i++){ last->next = head->next; free(head); head = last->next; void skipdel2(node* head, int skip, int del) { Node *last; int i; while (head) { for (i = 0; i < skip-1 && head; i++) { head = head->next; if (!head) break; last = head; head = head->next; for (i = 0; i < del && head; i++) { last->next = head->next; free(head); head = last->next; 2

25 9 שאלה )20 4 נקודות( typedef struct node{ int val; struct node *left, *right; Node; int connected(node* root, int num1, int num2){ int static flag; int res; if(!root) return 0; if(flag==1 && root->val == num2) return 1; if(flag=0 && root->val == num1){ flag = 1; res = connected(root->left, num1, num2) connected(root->right, num1, num2); flag = 0; return res; return connected(root->left, num1, num2) connected(root->right, num1, num2); 3

26 10 שאלה ( 5 25 נקודות( #include <stdio.h> #include <string.h> int capc_la(file *medicine, char *sales, int date){ FILE *prevmed, *newmed, *report; char medicinename[26],filename[34]; int prevdate, datem, day, buy, sell, sumsell, sumexpir; prevdate= date%10 == 1? date-91 : date-3; // = 1510, =1601 if (!(report = fopen(sales, "w"))) return 0; while (fscanf(medicine, "%[^,]%*22c", medicinename)!=eof) { sprintf(filename, "%s%04d.txt", medicinename, prevdate); if (!(prevmed = fopen(filename, "r"))) return 0; sprintf(filename, "%s%04d.txt", medicinename, date); if (!(newmed = fopen(filename, "w"))) return 0; sumsell = sumexpir = 0; while(fscanf(prevmed, "%4d%d%*c%d%*c%d%*c", &datem, &day, &buy, &sell)!=eof){ sumsell += sell; if(datem<date) sumexpir += buy - sell; else fprintf(newmed, "%04d%02d,%4d, 0\n", datem, day, buy - sell); fprintf(report, "%-25s,%6d,%6d\n",medicineName, sumsell, sumexpir); if (fclose(prevmed) == EOF fclose(newmed) == EOF) return 0; if (fclose(report) == EOF ) return 0; return 1; 4

27 אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: ב' אדר א' תשע"ו שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: מס' הקורס : הנדסה מיועד לתלמידי : א' מועד א' סמ' שנה תשע"ו 3 שעות משך הבחינה : דף פוליו אחד לא מודפס חומר עזר : ולא מצולם. אין להשתמש במחשבון. במבחן זה 5 שאלות רשמו תשובותיכם בדפי התשובות בלבד מחברת הטיוטה לא תימסר לבדיקה בסיום המבחן נאסוף רק את דפי התשובות מותר להגדיר פונקציות עזר בכל השאלות, אלא אם נאמר אחרת. כתבו קוד קריא והקפידו על אינדנטציה והערות )בעברית(. ב ה צ ל ח ה! 1

28 2 שאלה )12 1 נקודות( בשאלה הזאת הניחו כי גודל int וגודל כל מצביע במערכת הוא 4 בייט. בכל סעיף ענה מה יודפס על המסך אחרי ביצוע הפונקציה. )כל סעיף 2 נקודות( void ex1(){ char* a = "abcdefghijklmnopq"; printf("%c", a[a[strlen(a)]]); void ex2(){ char* a = "2016"; printf("%c", a[a[0] - a[2] + a[1]]); void ex3(){ char* a = "abcdefghijklmnopq"; printf("%c", (a + 3)[1]); struct cab{ int c; char a[20]; int b; ; void ex4(){ struct cab a = { 1, "abcdefghijklmnopq", 2; printf("%c", (a.a + 3)[1]); a b q 0 שגיאה או ערך זבל. אף תשובה לא נכונה שגיאה או ערך זבל. אף תשובה לא נכונה. b d e k q אף תשובה לא נכונה. b d e i 0 אף תשובה לא נכונה

29 3 #include <stdio.h> int nextfree(int** arr, int size, int *pi, int *pj){ static int i, j; if(i==size){ i=j=0; return 0; if(!arr[i][j]){ *pi = i; *pj = j; return 1; if(j==size){ j=0; i++; else j++; return nextfree(arr, size, pi, pj); שאלה ( 2 18 נקודות( נתונה התכנית הבאה: int freecell(int **arr, int size, int i, int j){ if(i==-1 i==size j==-1 j==size arr[i][j]) return 0; return 1; void print(int **arr, int size){ int i, j; for (i=0; i<size; i++){ for(j=0; j<size; j++) printf("%3d", arr[i][j]); putchar('\n'); putchar('\n'); void zero(int **arr, int size){ int i, j; for(i=0; i<size; i++) for(j=0; j<size; j++) arr[i][j]=0; 3

30 4 void what(int **arr, int size, int i, int j){ int static count; arr[i][j]= ++count; if(freecell(arr, size, i-1, j)) what(arr, size, i-1,j); else if(freecell(arr, size, i, j+1)) what(arr, size, i, j+1); else if (freecell(arr, size, i+1, j)) what(arr, size, i+1, j); else if(freecell(arr, size, i, j-1)) what(arr, size, i, j-1); else if(nextfree(arr, size, &i, &j)) what(arr, size, i, j); else count = 0; void main(){ int *arr[5], i, a[5][5]={0; for (i=0; i<5; i++) arr[i]=a[i]; what(arr, 5, 0, 0); print(arr, 5); // 1 zero(arr, 5); what(arr, 5, 4, 4); print(arr, 5); // 2 zero(arr, 5); what(arr, 5, 2, 2); print(arr, 5); // 3 פלט פלט פלט סעיף א'. )12 נקודות( מה הפלט של התכנית הנ"ל? סעיף ב'. )6 נקודות( עבור המערך arr בגודל sizexsize והמצביעים pj ו- pi הסבר בקצרה מה יעודה של הקריאה pj) nextfree(arr, size, pi, )לפרט מה תפקידם של pi ו- pj ומה בדיוק הערך המוחזר( 4

31 5 שאלה ( 3 22 נקודות( typedef struct node{ int val; struct node* next; Node; כדי לממש רשימה מקושרת נתונה ההגדרה הבאה: רשימה מקושרת ממוינת על פי ראש היא רשימה שבה עבור כל זוג ערכים ברשימה, המופע הראשון של ערך מסוים נמצא לפני המופע הראשון של ערך גדול ממנו. לדוגמא: lst1 היא רשימה ממוינת על פי ראש. סומנו בכוכבית המופעים הראשונים של הערכים שברשימה. lst * * * * * lst2 אינה רשימה ממוינת על פי ראש. בכוכבית המופעים הראשונים של הערכים שברשימה. שימו לב כי המופע הראשון של 4 הינו אחרי המופע הראשון של 5. lst * * * 1 כתבו פונקציה head) int issortedbyhead(node* הרשימה ממוינת על פי ראש ו- 0 אחרת. אשר מקבלת רשימה מקושרת ומחזירה אם אין לשנות את הרשימה שהתקבלה אין להגדיר מבנה נתונים אחר מלבד הרשימה הנתונה. 5

32 6 שאלה )25 4 נקודות( סעיף א'. )10 נקודות( כתבו פונקציה root) void mirror(struct item* המקבלת מצביע לשורש עץ בינארי או עץ טרינארי ומעדכנת אותו להיות עץ הראי שלו. אין להשתמש בפונקצית עזר. כתבו ופרטו את ההגדרה של struct item שיכולה להתאים גם לעץ בינאיר וגם לעץ טרינארי. סעיף ב'. )12 נקודות( הגדרה: עץ A זהה לעץ B אם ורק אם הם זהים במבנה שלהם וגם הערך הנמצא בקודקוד a בעץ A זהה לערך הנמצא בקודקוד המקביל לו בעץ B וזאת לכל קודקודי העצים. כתבו פונקציה root2) int ismirror(struct item* root1, struct item* המקבלת שני עצים, עץ 1 ועץ 2, ובודקת האם עץ הראי של עץ 1 זהה לעץ 2 המקורי. ניתן - אך לא חובה - להשתמש בפונקציות שכתבתם בסעיף הקודם אף אם לא כתבתם אותה, אין להשתמש בפונקצית עזר נוספת. שימו לב כי לא מקבלים עץ חיפוש אלא עץ רגיל - כלומר בהינתן ערך של קודקוד, ערכו של בנו הימיני יכול להיות גדול ממנו קטן ממנו או שווה לו. וכך גם לגבי שאר בניו. סעיף ג'. )3 נקודות( כתבו הגדרה של מבנה struct itemplus בו הייתם משתמשים לו סעיף א' היה על עץ בו לכל קודקוד יש מספר בנים הנקבע בזמן הקומפילציה ואת הרעיון הכללי של כיצד הייתם הופכים אותו לעץ הראי שלו. 6

33 7 שאלה ( 5 25 נקודות( לרשת "WiSki" יש בתי מלון במספר אתרי סקי באירופה, הרשת מציעה חופשת לשבוע בשיטת "הכול כלול". לקראת סוף העונה, החליטו מנהלי הרשת להציע את החדרים שלא הוזמנו בהנחה של 50%. עבור כל בית מלון ברשת, שמור קובץ במבנה הבא: - 25 תווים. בשורה הראשונה: שם בית המלון לאחר מכן, כל שורה בקובץ מכילה את הנתונים הבאים: 6 ספרות - תאריך במבנה yymmdd ספרה אחת - מספר אנשים בחדר 5 ספרות. - מחיר לשבוע בשקלים השורות ממוינות לפי תאריך, אחר כך לפי מספר אנשים בחדר ואחר כך לפי מחיר. בקובץ לדוגמא ניתן לראות כי יש חדרים פנויים בתאריך 17/2/2016 עבור 4 2, ו- 6 אנשים בחדר, ובתאריך 24/2/2016 יש חדרים פנויים עבור 3 1, ו -5 אנשים, וכך הלאה... ההזמנות לחדרים לכל בתי המלון מרוכזות בקובץ אחד. כל שורה בקובץ ההזמנות היא במבנה הבא: 25 תווים - שם בית המלון 15 תווים - שם הלקוח - 9 תווים תעודת זהות )yymmdd - 6 תווים )במבנה תאריך מספר אנשים בחדר - ספרה אחת. קובץ ההזמנות ממוין לפי תאריך ולאחר מכן, לפי מספר אנשים בחדר. חברת "Wiski" מעוניינת לקבל דיווח על ההזמנות שאושרו )כלומר: יש עבורן חדר פנוי התואם לדרישות(, ועל ההזמנות שלא אושרו. הדיווח יישמר בקבצים במהנה הבא: מבנה קובץ ההזמנות שאושרו : - 15 תווים. שם הלקוח - 9 תווים ת.ז. לקוח - 25 תווים. שם בית המלון - 6 תווים. תאריך 5 ספרות. - מחיר מבנה קובץ ההזמנות שנדחו : - 15 תווים. שם הלקוח - 9 תווים. ת.ז. לקוח - 25 תווים. שם בית המלון - 6 תווים. תאריך כתבו פונקציה denied) int hotel(file* arr[], int size, FILE* orders, char* accept, char* המקבלת כפרמטרים מערך של מצביעים לקבצים של המלונות ואת גודלו, מצביע לקובץ ההזמנות, שם קובץ ההזמנות שהתקבלו ושם קובץ ההזמנות שנדחו. הפונקציה תחזיר את מספר הבקשות שהתקבלו )בכל מקרה של שגיאה הפונקציה תחזיר הערך 1-(. שימו לב! בכל אחד מהקבצים, אין תווים בין נתון לנתון. אין לעבור על קובץ יותר מפעם אחת. אין להעתיק קובץ למבנה נתונים אחר )מערך, רשימה משורשרת, עץ,קובץ אחר...(. Val Thorens "L'altitude" : 7

34 8 רשימת פונקציות קלט/פלט: INPUT/OUTPUT FUNCTIONS PROTOTYPES Open/Close a file FILE *fopen( char *filename, char *mode ); int fclose(file *stream); Repositions the file pointer to the beginning of a file void rewind( FILE *stream ); Get/put a character int fgetc( FILE *stream ); int fputc( int c, FILE *stream ); Get/put a string char *fgets( char *string, int n, FILE *stream ); int fputs( const char *string, FILE *stream ); Formatted Input/Output int fscanf( FILE *stream, const char *format [, argument ]... ); int sscanf( const char *string, const char *format [, argument ]... ); int fprintf( FILE *stream, const char *format [, argument ]...); int sprintf( char *string, const char *format [, argument ]...); Remove a file int remove(const char* filename); Rename a file int rename(const char* oldname, const char*newname); ב ה צ ל ח ה! 8

35 9 ex1 = 1 ex2 = 5 ex3 = 3 ex4 = 3 שאלה )12 1 נקודות( שאלה )18 2 נקודות( סעיף א'. )12 נקודות( פלט 1: פלט 2: פלט 3: סעיף ב'. )6 נקודות( עבור המערך arr בגודל sizexsize והמצביעים pj ו- pi הקריאה pj) nextfree(arr, size, pi, - סורקת את המערך כל שורה משמאל לימין ומחפשת את האיבר הראשון ששווה אפס, - ודרך המצביעים pi ו- pj מחזירה את האינדקסים של האיבר. - אם המערך מלא ערכים שונים מאפס הפונקציה מחזירה אפס אחרת 1. int issortedbyhead(node* head){ Node *p,*q; שאלה ( 3 22 נקודות( for(p = head; p; p = p->next) for(q = head; q!= p; q = q->next){ if (q->val == p->val) break; if (q->val > p->val) return 0; return 1; 1

36 10 struct item{ struct item *left, *right, *center; int istrinary; int value; ; שאלה )25 4 נקודות( סעיף א'. )10 נקודות( void mirror(struct item * root){ struct item * temp; if (!root) return; temp = root->left; root->left = root->right; root->right = temp; mirror(root->left); mirror(root->right); if(root->istrinary) mirror(root->center); סעיף ב'. )12 נקודות( פתרון עם פונקצית int ismirror1(struct item* root1, struct item* root2){ // mirror static int level = 0; int curr; if(level==0) mirror(root1); if(!root1 &&!root2) return 1; if(!root1!root2 (root1->value!=root2->value)) return 0; level++; if(ismirror1(root1->left,root2->left) && ismirror1(root1->right,root2->right) && (root1->istrinary && root2->istrinary)?ismirror1(root1->center,root2->center):1) curr=1; else curr=0; level--; if(level==0) mirror(root1); return curr; פתרון בלי פונקצית int ismirror2(struct item * root1, struct item * root2){ // mirror if(!root1 &&!root2) return 1; if(!root1!root2 (root1->value!=root2->value)) return 0; return (ismirror2(root1->right,root2->left) && ismirror2(root1->left,root2->right) && ismirror2(root1->center,root2->center)); #define N 100 struct itemplus{ struct itemplus* sons[n]; int value; ; 2 סעיף ג'. )3 נקודות( האלגוריתם להפוך לעץ ראי: אם העץ ריק סיימנו, אחרת מחליפים את הערך של sons[0] עם הערך של,sons[N-1] של sons[1] עם.sons על כל האיברים של המערך mirror ומפעילים את הפונקציה...sons[N-2]

37 11 שאלה )25 5 נקודות( typedef struct{ char name[26]; int date, people, price, flag; FILE* fp; hotels; int hotel(file* arr[], int size, FILE* orders, char* accept, char* denied){ FILE *acc, *den; hotels *arrh; char nameh[26], details[25]; int date, people, i, res=0; if(!(arrh = (hotels*)malloc(sizeof(hotels)*size))) return -1; if(!(acc = fopen(accept,"w"))) return -1; if(!(den = fopen(denied,"w"))) return -1; for(i=0; i<size; i++) arrh[i].flag = fscanf(arr[i], "%[^\n]%*c%6d%1d%5d%*c", arrh[i].name, &arrh[i].date, &arrh[i].people, &arrh[i].price); while(fscanf(orders, "%25[^\n]%24[^\n]%6d%d%*c", nameh, details, &date, &people)==5){ for(i=0; strcmp(nameh, arrh[i].name); i++); while(arrh[i].flag!=eof && (arrh[i].date < date arrh[i].date==date && arrh[i].people<people)) arrh[i].flag = fscanf(arr[i], "%6d%1d%5d%*c", &arrh[i].date, &arrh[i].people, &arrh[i].price); if(arrh[i].flag!=eof && arrh[i].date==date && arrh[i].people==people){ fprintf(acc, "%s%s%06d%05d\n", details, nameh, date, arrh[i].price/2); res++; arrh[i].flag = fscanf(arr[i], "%6d%1d%5d%*c", &arrh[i].date, &arrh[i].people, &arrh[i].price); else fprintf(den, "%s%s%06d\n", details, nameh, date); free(arrh); if(fclose(acc)==eof fclose(den)==eof) return -1; return res; 3

38 אוניברסיטת בן גוריון בנגב מספרנבחן : תאריךהמבחן:כ"ואלול תשע"ו שמותהמורים:ציוןסיקסיק תכנות ב- C א' מבחןב: מס'הקורס : מיועדלתלמידי : הנדסה מועד א' סמ'קיץ שנה תשע"ו 3 שעות משךהבחינה : חומרעזר : דףפוליואחדלאמודפס איןלהשתמשבמחשבון. ולאמצולם. במבחן זה 5 שאלות רשמו תשובותיכם בדפי התשובות בלבד מחברת הטיוטה לא תימסר לבדיקה בסיום המבחן נאסוףרק את דפי התשובות מותר להגדיר פונקציות עזר בכל השאלות,אלא אם נאמראחרת. כתבו קוד קריא והקפידו על אינדנטציה והערות (בעברית). ב ה צ ל ח ה! 1

39 2 שאלה (16 1 נקודות) הפונקציה printstrings מדפיסה את כל המחרוזות str באורך n המקיימות את התנאים הבאים: א. המחרוזות מכילות אך ורק את התווים a,b ו- c. ב. המחרוזות לא מכילות שני a- ים רצופים. ג. המחרוזות לא מכילות שלושה c םי- רצופים. הפונקציה מחזירה מספר שלם המייצג את מספר המחרוזות באורך n העונות על התנאים הנ"ל. לדוגמא: עבור 3=n הפונקציה תדפיס את הפלט הבא: aba,abb,abc,aca,acb,acc,bab,bac,bba,bbb,bbc,bca,bcb,bcc,cab, cac,cba,cbb,cbc,cca,ccb, ערך החזרה של הפונקציה 21. #include<stdio.h> #define N 3 השלימו בדף התשובות את הקטעים המסומנים ב-?? n??. int printstrings(int i, int n, char* str, int a, int c){ int count=0; if (?? 1?? ) { printf("%s,", str);?? 2?? ; if (?? 3?? ) a=0; else{ str[i] = 'a'; count +=?? 4?? ;?? 5?? ; count += printstrings(i+1, n, str, a, c); if (c==2)?? 6?? ; else{ str[i] = 'c'; count +=?? 7?? ;?? 8??; void main(){ char str[n+1]; str[n] = '\0'; printf("%d\n",printstrings(0,n,str,0,0)); 2

40 3 שאלה 2 (18 נקודות) סעיף א'. (15 נקודות) #include <stdio.h> #include <stdlib.h> נתונה התכנית הבאה: typedef struct node { int value; struct node *zero, *plus; node; void what(int *arr, node* num, int size) { if (!size) { printf("%d\n", num -> value); return; num -> zero = (node*)malloc(sizeof(node)); num -> zero -> value = num -> value; what(arr + 1, num -> zero, size - 1); num -> plus = (node*)malloc(sizeof(node)); num -> plus -> value = num -> value + *arr; what(arr + 1, num -> plus, size - 1); void main() { int a[] = { 1, 2, 3, 4 ; node root; root.value = 0; what(a, &root, 4); בהנחה שהפונקציה malloc עובדת ללא תקלה, מה הפלט של התכנית הנ"ל? סעיף ב'. (3 נקודות) ציירו את העץ המתקבל לאחר ביצוע הקוד הנ"ל. 3

41 4 שאלה 3 ) 22 נקודות) כתבו פונקציה length) void subsentence(char *sent, int המקבלת מחרוזת sent ו- length מספר שלם חיובי, הפונקציה מדפיסה את כל תתי-מחרוזות באורך length המופיעות במחרוזת sent ללא רווחים. אם אותה תת-מחרוזת מופיעה יותר מפעם אחת יודפס המופע הראשון בלבד. שימו לב תת-מחרוזת יכולה לכלול אותיות של מספר מילים רצופות. חובה להגדיר לפחות פונקצית עזר אחת. לדוגמא עבור המחרוזת sentence" "this is a והאורך 2 יודפס: שימו לב תתי המחרוזות "is" ו-" en " מופיעות פעם אחת בלבד. th hi is si sa as se en nt te nc ce 4

42 5 שאלה ) 4 22 נקודות) typedef struct item item; struct item{ char name[25]; long id; int grade; item *next; ; כדי לממש רשימה משורשרת נתונה ההגדרה הבאה: כתבו פונקציה list) item** distribution(item* שמקבלת list מצביע לרשימה משורשרת של מבנים שמכילים פרטי סטודנטים (שם, ת.ז., ציון). הפונקציה בונה ומחזירה מערך בן 10 איברים של מצבעים לרשימות משורשרות של התפלגות הסטודנטים לפי ציון. הרשימות האלה בניות מהמבנים של הרשימה.list אם המערך המוחזר הוא arr אזי: arr[0] מצביע על הרשימה המשורשרת של הסטודנטים שקיבלו ציון בין 0 ל- 9. arr[1] מצביע על הרשימה המשורשרת של הסטודנטים שקיבלו ציון בין 10 ל arr[9] מצביע על הרשימה המשורשרת של הסטודנטים שקיבלו ציון בין 90 ל- 100 שימו לב: אין בשאלה הזאת ליצור מבנים חדשים. אין להעתיק את הרשימה המקורית למבנה נתונים אחר פרט למבנה שהוגדר בשאלה. סדר האיברים ברשימות החדשות אינו חשוב. 5

43 6 שאלה ) 5 24 נקודות) חברה "א.ב.ג. סע" כל חודש מקבלת מכל תחנות הדלק ש אתן עובדת קובץ פירוט תדלוקים הרכבים שלה. כל תחנת דלק שולחת כל חודש קובץ שבו כל שורה מכילה: 2 ספרה (בין 01 ל- 31) יום בחודש 5 תווים (בפורמט (hh:mm שעה 7 ספרות מספר רכב ספרה סוג דלק 3 ספרות כמות בליטרים 6 תוים (בפורמט (xxx.xx סכום בשקלים בכל יום יתכנו מספר מתדלוקים של אותו רכב באותה תחנת דלק או בתחנות שונות. הקובץ ממוין לפי יום בחודש בסדר עולה ומיון משנה לפי מספר רכב בסדר עולה. כתבו פונקציה filename) int gasoline(file** arr, int size, char* שמקבלת arr מערך מצביעים של הקבצים שהתקבלו החודש מתחנות הדלק, size גודל המערך, ומחרוזת filename שהיא השם של הקובץ החדש שהפונקציה יוצרת. הקובץ מכיל ריכוז הנתונים של כל תחנות הדלק כל שורה בקובץ מכילה: 2 ספרה (בין 01 ל- 31) יום בחודש 7 ספרות מספר רכב ספרה סוג דלק 3 ספרות סה"כ ליטרים 8 תוים (בפורמט (xxxxx.yy סה"כ עלות בשקלים ספרה מספר תדלוקים הקובץ ממוין לפי יום בחודש בסדר עולה ומיון משנה לפי מספר רכב בסדר עולה. עבור כל רכב שתדלק באותו יום מופיעה שורה אחת בלבד. הפונקציה תחזיר 1 עבור מהלך תקין ו- 0 בכל מקרה של תקלה (בקריאה או כתיבה לקובץ). שימו לב! בכל אחד מהקבצים, אין תווים בין נתון לנתון. אין לעבור על קובץ יותר מפעם אחת. אין להעתיק קובץ למבנה נתונים אחר (מערך, רשימה משורשרת, עץ,קובץ אחר...). 6

44 7 רשימת פונקציות קלט/פלט: INPUT/OUTPUT FUNCTIONS PROTOTYPES Open/Close a file FILE *fopen( char *filename, char *mode ); int fclose(file *stream); Repositions the file pointer to the beginning of a file void rewind( FILE *stream ); Get/put a character int fgetc( FILE *stream ); int fputc( int c, FILE *stream ); Get/put a string char *fgets( char *string, int n, FILE *stream ); int fputs( const char *string, FILE *stream ); Formatted Input/Output int fscanf( FILE *stream, const char *format [, argument ]... ); int sscanf( const char *string, const char *format [, argument ]... ); int fprintf( FILE *stream, const char *format [, argument ]...); int sprintf( char *string, const char *format [, argument ]...); Remove a file int remove(const char* filename); Rename a file int rename(const char* oldname, const char*newname); ב ה צ ל ח ה! 7

45 8 int printstrings(int i, int n, char* str, int a, int c) { int count = 0; if (i == n) { // str[i]=='\0' printf("%s\n", str); return 1; או if(a) if (a == 1) // a = 0; else { str[i] = 'a'; count += printstrings(i+1, n, str, 1, 0); או c) // printstrings(i+1, n, str, a+1, str[i] = 'b'; count += printstrings(i + 1, n, str, a, c); שאלה )16 1 נקודות( if (c == 2) count += (str[i-1]=='c'&& str[i-2]=='c')? 0 : printstrings(i, n, str, a, str[i-1]=='c'); //,str, 0... else { str[i] = 'c'; count += printstrings(i + 1, n, str, a, c + 1); או c+1) // printstrings(i+1, n, str, 0, return count; 1

46 שאלה )18 2 נקודות( סעיף א'. )15 נקודות( סעיף ב'. )3 נקודות( 2

47 10 שאלה ( 3 22 נקודות( int found(char **arr, int size, char *str){ int i; for (i=0; i<size; i++) if(!strcmp(arr[i], str)) return 1; return 0; void subsentence(char *sent, int length){ char** arr, *noblank, *temp; int i, j, len, size=0; noblank = (char *)malloc(strlen(sent)+1); for(i=0; *sent; sent++) if(*sent!=' ') noblank[i++] = *sent; noblank[i]='\0'; len = (int)strlen(noblank); arr = (char **)malloc(len*sizeof(char*)); temp = (char*)malloc(length+1); for (i=0; i<=len-length; i++){ for(j=0; j<length; j++) temp[j]=noblank[i+j]; temp[j]='\0'; if(!found(arr, size, temp)){ arr[size++] = temp; temp = (char*)malloc(length+1); for(i=0; i<size; i++){ puts(arr[i]); free(arr[i]); free(temp); free(arr); free(noblank); 3

48 11 typedef struct item item; struct item{ char name[25]; long id; int grade; item *next; ; שאלה )22 4 נקודות( item** distribution(item* list){ item **arr, *head; int i, index; arr = (item**)malloc(sizeof(item*)); if ( arr == NULL){ puts("error in memory allocation"); exit(1); for(i=0; i<10; i++) arr[i]=null; while( list ){ head = list; list = list -> next; index = head->grade/10 - head->grade/100; head->next = arr[index]; arr[index] = head; return arr; 4

49 12 typedef struct { int eof, day, car, litres, count; double price; line; int gasoline(file **arr, int size, char *filename){ FILE *fp; line * station = (line *)malloc(sizeof(line)*size); int i, day, mincar, litres, count; double price; if(!(fp=fopen(filename,"w"))) return 0; שאלה )24 5 נקודות( for(i=0;i<size;i++) station[i].eof = fscanf(arr[i],"%2d%*5c%8d%3d%6lf%*c", &station[i].day, &station[i].car, &station[i].litres, &station[i].price); for(day=1; day<=31; day++){ for(i=0, mincar= ; i<size; i++) if(station[i].eof!=eof && day==station[i].day) if(station[i].car < mincar) mincar = station[i].car; if(mincar == ) continue; price = litres = count = 0; for(i=0; i<size; i++) while (station[i].eof!=eof && day==station[i].day && station[i].car==mincar){ litres += station[i].litres; price += station[i].price; count++; station[i].eof=fscanf(arr[i],"%2d%*5c%8d%3d%6lf%* c", &station[i].day, &station[i].car, station[i].litres, &station[i].price); fprintf(fp,"%02d%08d%03d%8.2f%d\n", day, mincar, litres, price, count); day--; free(station); if(fclose(fp)==eof) return 0; return 1; 5

50

51 2 nstrprintstrings ca,b a c n : n=3 aba,abb,abc,aca,acb,acc,bab,bac,bba,bbb,bbc,bca,bcb,bcc,cab, cac,cba,cbb,cbc,cca,ccb, n

52 3

53 4 lengthsentvoid subsentence(char *sent, int length) length sent "en""is"

54 item** distribution(item* list) list list arr arr[0] arr[1] arr[9] 5 ןוירוג-ןב,םיטנדוטסה תדוגא םימוכיסה רגאמ

55 arrint gasoline(file** arr, int size, char* filename) filenamesize 6 ןוירוג-ןב,םיטנדוטסה תדוגא םימוכיסה רגאמ

56 7 INPUT/OUTPUT FUNCTIONS PROTOTYPES Open/Close a file FILE *fopen( char *filename, char *mode ); int fclose(file *stream); Repositions the file pointer to the beginning of a file void rewind( FILE *stream ); Get/put a character int fgetc( FILE *stream ); int fputc( int c, FILE *stream ); Get/put a string char *fgets( char *string, int n, FILE *stream ); int fputs( const char *string, FILE *stream ); Formatted Input/Output int fscanf( FILE *stream, const char *format [, argument ]... ); int sscanf( const char *string, const char *format [, argument ]... ); int fprintf( FILE *stream, const char *format [, argument ]...); int sprintf( char *string, const char *format [, argument ]...); Remove a file int remove(const char* filename); Rename a file int rename(const char* oldname, const char*newname);

57 8

58 9

59 10

60 11

61 12

62 13

63 אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ח תשרי תשע"ז שמות המורים: ציון סיקסיק א' תכנות ב- C מבחן ב: מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' קיץ שנה תשע"ו 3 שעות משך הבחינה : דף פוליו אחד לא מודפס חומר עזר : ולא מצולם. אין להשתמש במחשבון. במבחן זה 5 שאלות רשמו תשובותיכם בדפי התשובות בלבד מחברת הטיוטה לא תימסר לבדיקה בסיום המבחן נאסוף רק את דפי התשובות מותר להגדיר פונקציות עזר בכל השאלות, אלא אם נאמר אחרת. כתבו קוד קריא והקפידו על אינדנטציה והערות (בעברית). ב ה צ ל ח ה! 1

64 2 שאלה (18 1 נקודות) הפונקציה str2) int star(char* str1, char* מקבלת כארגומנטים str1 מחרוזת של אותיות ו- str2 מחרוזת של אותיות וכוכביות. הפונקציה בודקת אם ניתן להחליף ב- str2 כל כוכבית בצירוף אותיות כלשהו (שיכול להיות בגודל אפס) ולקבל בדיוק את המחרוזת.str1 אם כן הפונקציה מחזירה את מספר הצירופים האפשריים אחרת מחזירה אפס. ידוע שאין כוכבית בסוף המחרוזת.str2 לדוגמה עבור הפונקציה הראשית הבאה: void main(){ printf("%d ", star("bcabcc", "b*c")); printf("%d ", star("abcabcc", "b*c")); printf("%d ", star("bbcabcc", "*b*c")); printf("%d ", star("bcbc", "*b*c")); נקבל את הפלט (משאל לימין): 2 השלימו בדף התשובות את הקטעים החסרים המסומנים ב-?? N?? int star(char* str1, char* str2){ if(!*str1 &&!*str2) return?? 1?? ; if(!*str1!*str2) return?? 2?? ; if(*str1 == *str2) return star(?? 3??,?? 4?? ); if(*str2 == '*') return star(?? 5??,?? 6?? ) + star(?? 7??,?? 8?? ); return?? 9?? ; 2

65 3 שאלה (19 2 נקודות) סעיף א'. (16 נקודות) #include <stdio.h> #include <stdlib.h> #include <string.h> נתונה התכנית הבאה: typedef struct node { char letter; struct node* left; struct node* right; Node; void print(node* root) { if (!root) return; putchar(root->letter); print(root->left); print(root->right); Node* what(char *str, int start, int length){ Node* temp; int end = start + length / 2; if (length == 0) return NULL; temp = (Node*)malloc(sizeof(Node)); temp->letter = str[end]; temp->left = what(str, start, end-start); temp->right = what(str, end + 1, start + length-1-end); return temp; void main() { char st[] = "this*is*a*string"; print(what(st, 0, (int)strlen(st))); בהנחה שהפונקציה malloc עובדת ללא תקלה, מה הפלט של התכנית הנ"ל? סעיף ב'. (3 נקודות) איך לשנות את הפונקציה print כך שהקריאה לפונקציה שב- main תדפיס את המחרוזת המקורית (במקרה שלנו example".("this is an אגודת הסטודנטים, בן גוריון 3

66 4 שאלה (22 3 נקודות) כיתבו פונקציה *p_size) char** wordsfromsentence (char *sent, char limit, int המקבלת מחרוזת,sent תו limit ומצביע.p_size הפונקציה מדפיסה ומחזירה מערך בגודל מדויק של כל המילים (בגודל מדויק) המופיעות במחרוזת.sent ההפרדה בין המילים במחרוזת sent היא מאמצעות התו limit או רצף תווים כזה. אם אותה מילה מופיעה יותר מפעם אחת יודפס וישמר במערך המופע הראשון בלבד. דרך המצביע p_size הפונקציה "מחזירה" את מספר המילים שהודפסו (שהוא גם גודל המערך המוחזר). חובה להגדיר לפחות פונקציית עזר אחת. יודפס ויוחזר this is a sentence and another word לדוגמא: עבור המחרוזת " this.is..a.sentence.and.this.is.another.word" והתו '.' מערך של המילים: דרך המצביע p_size הפונקציה "מחזריה" את הערך 7. שימו לב שהמילים "this" ו-" is " מופיעות פעם אחת בלבד. 4

67 5 שאלה ) 4 22 נקודות) typedef struct item* Item; struct item{ int num; Item next; ; כדי לממש רשימה משורשרת נתונה ההגדרה הבאה: כיתבו פונקציה רקורסיבית sum) int sublistsum(item list, int שמקבלת list מצביע לרשימה משורשרת ומספר שלם.sum הפונקציה מדפיסה את אורכי כל תתי הרשימות שסכום איבריהן הוא sum ומחזירה את מספר תתי הרשימות. לדוגמה עבור sum=7 והרשימה הבאה: list NULL הפונקציה תדפיס את האורכים 3 1, ו- 3 ותחזיר את הערך 3 עבור תתי הרשימות: Head 7 NULL Head NULL Head NULL שימו לב: אין ליצור מבנים חדשים או לשנות את הרשימה. אין להשתמש ביותר מלולאה אחת. אין להגדיר פונקצית עזר. פונקציה לא רקורסיבית תאפשר לקבל לכל היותר חצי הנקודות. אגודת הסטודנטים, בן גוריון 5

68 6 שאלה (22 5 נקודות) בסניפי קופת חולים "סי-בריא" קובעים תורים למרפאות חוץ של המרכז הרפואי "בן-גוריון". לקופת חולים 10 סניפים ממוספרים מ- 0 עד 9. למרכז הרפואי 7 מרפאות חוץ ממוספרות מ- 0 עד 6. כל חודש נשלחים למרכז הרפואי 10 הקבצים של 10 הסניפים עבור התורים של אותו חודש. כל שורה בקבצים מכילה: 2 ספרות יום בחודש 4 ספרות (לדוגמה 1145 עבור שעה 11:45) שעת התור 20 תווים שם החולה 9 ספרות ת.ז. ספרה אחת בין 0 ל- 6 מספר המרפאה 20 תווים שם רושם התור הקבצים ממוינים בסדר כרונולוגי (לפי יום ושעה בסדר עולה) ומיון משנה לפי מספר מרפאה. מהקבצים האלה בונים 7 קבצים של התורים של אותו חודש עבור 7 המרפאות. כל שורה בקובץ כזה מכילה את הפרטים הבאים: 2 ספרות יום בחודש 4 ספרות שעת התור 20 תווים שם החולה 9 ספרות ת.ז. ספרה אחת בין 0 ל- 9 מספר סניף ק"ח הקבצים ממוינים בסדר כרונולוגי (לפי יום ושעה בסדר עולה). אם בטעות משני סניפים נקבע תור לשני חולים באותה שעה באותה מרפאה אזי רושמים את הפרטים של שני התורים בקובץ שגויים. כל שורה בקובץ השגויים מכילה את הפרטים הבאים: 2 ספרות יום בחודש 4 ספרות שעת התור 20 תווים שם החולה 9 ספרות ת.ז. ספרה אחת בין 0 ל- 6 מספר המרפאה ספרה אחת בין 0 ל- 9 מספר סניף ק"ח 20 תווים שם רושם התור הקובץ ממוין בסדר כרונולוגי. כיתבו פונקציה error) int health(file* dispensary[10], FILE* clinic[7], char* שמקבלת dispensary מערך של 10 מצביעים של קבצי הסניפים ו- clinic מערך של 7 מצביעים לקבצי תורים של המרפאות חוץ ו- error מחרוזת שמכילה שם קובץ השגויים. הפונקציה תחזיר 1 עבור מהלך תקין ו- 0 בכל מקרה של תקלה (בקריאה או כתיבה לקובץ). שימו לב! בכל אחד מהקבצים, אין תווים בין נתון לנתון. אין לעבור על קובץ יותר מפעם אחת. אין להעתיק קובץ למבנה נתונים אחר (מערך, רשימה משורשרת, עץ, קובץ אחר...). 6

69 7 רשימת פונקציות קלט/פלט: INPUT/OUTPUT FUNCTIONS PROTOTYPES Open/Close a file FILE *fopen( char *filename, char *mode ); int fclose(file *stream); Repositions the file pointer to the beginning of a file void rewind( FILE *stream ); Get/put a character int fgetc( FILE *stream ); int fputc( int c, FILE *stream ); Get/put a string char *fgets( char *string, int n, FILE *stream ); int fputs( const char *string, FILE *stream ); Formatted Input/Output int fscanf( FILE *stream, const char *format [, argument ]... ); int sscanf( const char *string, const char *format [, argument ]... ); int fprintf( FILE *stream, const char *format [, argument ]...); int sprintf( char *string, const char *format [, argument ]...); Remove a file int remove(const char* filename); Rename a file int rename(const char* oldname, const char*newname); ב ה צ ל ח ה! אגודת הסטודנטים, בן גוריון 7

70 8 int star(char* str1, char* str2){ if(!*str2 &&!*str1) שאלה (18 1 נקודות) return 1 ; if(!*str1!*str2) return 0 ; if(*str1 == *str2 ) return star( str1+1, str2+1 ); if(*str2 == '*') return star( str1, str2+1 ) + what( str1+1, str2 ); return 0 ; שאלה (19 2 נקודות) סעיף א. (16 נקודות) סעיף ב. (3 נקודות) כדי שהקריאה לפונקציה שב- mainתדפיס את המחרוזת המקורית יש הקריאות הרקורסיביות.(inorder) a*ihtssi*rs*tnig להזיז את הפקודה putchar בין שתי

71 9 #include <stdio.h> #include <stdlib.h> #include <string.h> int found(char **arr, int size, char *str){ int i; for (i=0; i<size; i++) if(!strcmp(arr[i], str)) return 1; return 0; char* startword(char *sent, char limit){ while(*sent && *sent==limit) sent++; return sent; char* endword(char *sent, char limit){ while(*sent && *sent!=limit) sent++; return sent; char** wordsfromsentence (char *sent, char limit, int *p_size) { char **arr, *start, *end, *temp, **result=null; int i, size=0; arr = (char **)malloc(sizeof(char*)*((int)strlen(sent)+1)/2); sent = startword(sent, limit); while(*sent){ start = startword(sent, limit); end = endword(start, limit); temp = (char*)malloc(end-start+1); for (i=0; start!=end; i++) temp[i]=*start++; temp[i]='\0'; if(!found(arr, size, temp)) arr[size++] = temp; sent = end; result = (char **)malloc(sizeof(char*)*size); for(i=0; i<size; i++){ puts(arr[i]); result[i]=arr[i]; free(arr); *p_size = size; return result; (22 נקודות) שאלה 3 אגודת הסטודנטים, בן גוריון

72 10 שאלה ) 4 22 נקודות) typedef struct item* Item; struct item{ int num; Item next; ; int sublistsum(item list, int sum){ Item temp; int total, count; if(list==null) return 0; for(temp=list,count=total=0; temp && total<sum; temp=temp->next){ count++; total += temp->num; if(total==sum) printf("d\n", count); return (total==sum) + sublistsum(list->next, sum);

73 11 int health(file* dispensary[10], FILE* clinic[7], char* error){ int time[10], tmin, clinicnum[10], flag[10], disp, ok, i; char details[10][30], write[10][21]; FILE* ferror; שאלה (22 5 נקודות) if(!(ferror=fopen(error,"w"))) return 0; for(i=0; i<10; i++) flag[i]=fscanf(dispensary[i],"%6d%29[^\n]%1d%20[^\n]%*c", time+i,details[i],clinicnum+i,write[i]); while(1){ tmin=320000; for(i=0; i<10; i++) if(flag[i]==4) if(time[i] < tmin (time[i]==tmin && clinicnum[i]<clinicnum[disp])){ tmin = time[i]; disp = i; ok = 1; else if(time[i]==tmin && clinicnum[i]==clinicnum[disp]) ok = 0; if(tmin==320000)break; if(ok){ fprintf(clinic[clinicnum[disp]],"%06d%s%d\n", tmin,details[disp],disp); flag[disp]=fscanf(dispensary[disp],"%6d%29[^\n]%1d%20[^\n]%*c", time+disp,details[disp],clinicnum+disp,write[disp]); else for(i=disp; i<10; i++) if(time[i]==tmin && clinicnum[i]==clinicnum[disp]){ fprintf(ferror,"%06d%s%d\n", tmin,details[i],clinicnum[i],i,write[i]); flag[i]=fscanf(dispensary[i],"%6d%29[^\n]%1d%20[^\n]%*c",time+i,details[i],clinicnum+i,write[i]); if(fclose(ferror)==eof) return 0; return 1; אגודת הסטודנטים, בן גוריון

74 באדיבות רכזות בנק הבחינות והסיכומים

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ח תשרי תשע"ז 30.10.16 שמות המורים: ציון סיקסיק א' תכנות ב- C מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' קיץ שנה תשע"ו 3 שעות משך

קרא עוד

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג מנ' אב תשע"ז 15.08.17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' ב' שנה תשע"ז 3 שעות

קרא עוד

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג חשון תשע"ח 12/11/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד קיץ סמ' שנה תשע"ז 3 שעות משך

קרא עוד

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

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד אוניברסיטת בן גוריון בנגב תאריך המבחן: 29.01.19 שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות 202.1.9031 מס' הקורס : מיועד לתלמידי : הנדסת תעשיה וניהול שנה תשע"ט א' סמ' א' מועד 3 שעות משך

קרא עוד

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

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ אוניברסיטת בן גוריון בנגב תאריך המבחן: 12.02.17 שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: 202.1.9031 מס' הקורס : הנדסת תעשיה וניהול מיועד לתלמידי : א' מועד א' סמ' שנה תשע"ד 3 שעות משך

קרא עוד

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

פתרון מוצע לבחינת מהט ב_שפת c מועד ב אביב תשעט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9. פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9. הדפסה ראשונה: מתבצעת לולאה שרצה מאפס עד אורך המחרוזת.

קרא עוד

מבוא למדעי המחשב - חובלים

מבוא למדעי המחשב - חובלים אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב סמסטר ב' תשע"ב בחינת סיום, מועד ב',.02..9.7 מרצה: אורן וימן מתרגלים: נעמה טוויטו ועדו ניסנבוים מדריכי מעבדה: מחמוד שריף ומיקה עמית משך המבחן: שעתיים חומר

קרא עוד

Microsoft Word B

Microsoft Word B מרצה: שולי וינטנר. מתרגל: שלמה יונה מבוא למדעי המחשב מועד ב', סמסטר א' תשס"ג, 17/2/03 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: 1. ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב

קרא עוד

מבוא למדעי המחשב - חובלים

מבוא למדעי המחשב - חובלים החוג למדעי המחשב אוניברסיטת חיפה מבוא למדעי המחשב סמסטר א' תשע"ג בחינת סיום, מועד ב', 20.02.2013 מרצה: ריטה אוסדצ'י מתרגלת: נעמה טוויטו מדריך מעבדה: מחמוד שריף משך המבחן: שעתיים חומר עזר: ספר של Kernighan

קרא עוד

Microsoft Word - c_SimA_MoedB2005.doc

Microsoft Word - c_SimA_MoedB2005.doc מרצה: שולי וינטנר. מתרגל: עזרא דאיה. מבוא למדעי המחשב בחינת מועד ב', סמסטר א' תשס"ה,.2.2005 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות:. ודאו כי בטופס שבידיכם עמודים. יש לכתוב

קרא עוד

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשעב בחינת סיום, מועד א', הנחי אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', 6.2.2012 הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה מהכיתה במהלך

קרא עוד

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

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשעג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג,.6.013 משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם 8 עמודי שאלון )כולל עמוד זה(. עליכם לכתוב את התשובות על

קרא עוד

Slide 1

Slide 1 Introduction to Programming in C תרגול 8 1 1 רקורסיה תזכורת הגדרה: המונח רקורסיה (recursion) מתאר מצב שבו פונקציה קוראת לעצמה באופן ישיר או באופן עקיף. שימוש: נוח להשתמש בפונקציות רקורסיביות על מנת לפתור

קרא עוד

הגשה תוך שבוע בשעת התרגול

הגשה תוך שבוע בשעת התרגול מרצה: שולי וינטנר. מתרגל: שלמה יונה מבוא למדעי המחשב מועד ב', סמסטר א' תשס"ג, 17/2/03 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב את

קרא עוד

סדנת תכנות ב C/C++

סדנת תכנות ב   C/C++ פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבוא למחשבים ושפת C קוד הקורס: 2-7028510 תאריך בחינה: 15.2.2017 משך הבחינה: שעתיים שם המרצה: ד"ר אופיר פלא חומר עזר: פתוח שימוש במחשבון: לא הוראות כלליות:

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 6: כתובות ומצביעים 1 תוכנייה מצביעים מצביעים ומערכים, אריתמטיקה של מצביעים 2 3 מצביעים תזכורת- כתובות זיכרון הזיכרון כתובת התא #1000 #1004 #1008 ערך השמור בתא תא 10-4 לא מאותחל

קרא עוד

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשעז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', 31.1.2017 מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבוני, דולב שרון הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה

קרא עוד

מבוא לתכנות ב- JAVA תרגול 7

מבוא לתכנות ב- JAVA  תרגול 7 מבוא לתכנות ב- JAVA תרגול 8 תזכורת - מבנה של פונקציה רקורסיבית.2 פונקציה רקורסיבית מורכבת משני חלקים עיקריים 1. תנאי עצירה: מקרה/מקרים פשוטים בהם התוצאה לא מצריכה קריאה רקורסיבית לחישוב צעד רקורסיבי: קריאה

קרא עוד

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשעב בחינת סיום, מועד א', הנחי אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', 6.2.2012 הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה מהכיתה במהלך

קרא עוד

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בינסקי הנחיות: יש לענות על כל השאלות. יש לענות על כל

קרא עוד

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

מספר מחברת: עמוד 1 מתוך 11 תז: תשעא מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה עמוד 1 מתוך 11 תשע"א מועד ב סמסטר א' 14.2.2011 תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי המחשב יש לענות על כל 5 השאלות. בכל השאלות במבחן יש לכתוב פונקציות יעילות

קרא עוד

ex1-bash

ex1-bash ביה"ס למדעי המחשב סמסטר חורף תשע"ח 13.12.2017 יסודות מערכות פתוחות פתרון תרגיל מס' 7 המכללה האקדמית נתניה שימו לב: כל ההערות שבתחילת תרגילים 1-6 תקפות גם לתרגיל זה. הערה 1: החל מתרגיל זה והלאה, בכל פעם

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 10: מצביעים, מערכים ומחרוזות שבוע שעבר... מצביעים Call by reference 2 תוכנייה קשר מצביע-מערך )אריתמטיקה של מצביעים( העברת מערכים לפונקציה מחרוזות דוגמה 3 קשר מצביע-מערך 4 תזכורת: תמונת

קרא עוד

הגשה תוך שבוע בשעת התרגול

הגשה תוך שבוע בשעת התרגול מרצה: שולי וינטנר. מתרגל: עזרא דאיה. מבוא למדעי המחשב בחינת מועד א', סמסטר א' תשס"ה, 6..5 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב

קרא עוד

PRESENTATION NAME

PRESENTATION  NAME נכתב ע"י כרמי גרושקו. כל הזכויות שמורות 2010 הטכניון, מכון טכנולוגי לישראל הקצאה דינמית )malloc( מערכים דו-מימדיים סיבוכיות: ניתוח כזכור, כדי לאחסן מידע עלינו לבקש זכרון ממערכת ההפעלה. 2 עד עכשיו: הגדרנו

קרא עוד

Slide 1

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

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב מחרוזות, חתימה של פונקציה ומעטפות תוכן עניינים טיפוסים מורכבים טיפוסים מורכבים ערך שם טיפוס 12 m int undef. x boolean true y boolean arr int[] כאלה שעשויים להכיל יותר מערך פרימיטיבי אחד

קרא עוד

תרגול 1

תרגול 1 מבוא למדעי המחשב 2019 תרגול 5 מחרוזות, חתימות ורקורסיה מחרוזות רצף של תווים רקורסיה קריאה של מתודה לעצמה באופן ישיר או עקיף ראינו בהרצאה מחרוזות: תווים, חתימות: העמסה- String,הצהרה, overloading אתחול רקורסיה:

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 4: משתנים בוליאניים ופונקציות מבוא למדעי המחשב מ' - תירגול 4 1 משתנים בוליאניים מבוא למדעי המחשב מ' - תירגול 4 2 ערכי אמת מבחינים בין שני ערכי אמת: true ו- false לכל מספר שלם ניתן

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תכנות מתקדם בשפת Java אוניברסיטת תל אביב 1 תוכנה 1 תרגול 3: עבודה עם מחרוזות )Strings( מתודות )Methods( 1 תכנות מתקדם בשפת Java אוניברסיטת תל אביב 2 מחרוזות )STRINGS( 3 מחרוזות String s = Hello ; מחרוזות

קרא עוד

Tutorial 11

Tutorial 11 מבוא לשפת C תרגול 8: מערכים רב-ממדיים תרגילים בנושא מערכים ורקורסיה מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקנשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב" נכתב ע"י טל כהן, עודכן ע"י

קרא עוד

Slide 1

Slide 1 Introduction to Programming in C תרגול 7 1 1 רקורסיה הגדרה: המונח רקורסיה (recursion) מתאר מצב שבו פונקציה קוראת לעצמה באופן ישיר או באופן עקיף. שימוש: נוח להשתמש בפונקציות רקורסיביות על מנת לפתור בעיות

קרא עוד

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

תוכנה 1 1 אביב תשעג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תיעשה במערכת ה- mdle בלבד.(http://mdle.tau.ac.il/)

קרא עוד

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

Microsoft PowerPoint - T-10.ppt [Compatibility Mode] מבוא למחשב בשפת Matlab לולאות בלוקי try-catch :10 תרגול מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור, סאהר אסמיר וטל כהן עבור הקורס "מבוא למדעי המחשב" נכתב על-ידי רמי כהן,אולג רוכלנקו,

קרא עוד

מהוא לתכנות ב- JAVA מעבדה 3

מהוא לתכנות ב- JAVA מעבדה 3 מבוא לתכנות ב- JAVA מעבדה 3 נושאי התרגול לולאות ניפוי שגיאות לולאות - הקדמה כיצד הייתם כותבים תוכנית שתדפיס את המספרים השלמים בין 1 ל- 100 בעזרת הכלים שלמדתם עד עתה? חייבת להיות דרך אחרת מאשר לכתוב 100

קרא עוד

PowerPoint Presentation

PowerPoint Presentation רשימות מקושרות עבודה קבצים דוגמה מבנים המצביעים לעצמם רשימות מקושרות 2 נסתכל על המבנה הבא: typedef struct node { int data; struct node* next; *Node; איך נראים המבנים בזיכרון לאחר ביצוע הקוד הבא: Node node1

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 7: פונקציות 1 מה היה שבוע שעבר? לולאות מערכים מערכים דו-ממדיים 2 תוכנייה )call by value( פונקציות העברת פרמטרים ע"י ערך תחום הגדרה של משתנה מחסנית הקריאות 3 פונקציות 4 הגדרה של

קרא עוד

שקופית 1

שקופית 1 Computer Programming Summer 2017 תרגול 5 מערכים חד-מימדיים )תזכורת( לדוגמא: מערך בשם Arr בגודל 8 שאיבריו מטיפוס int 3 7 5 6 8 1 23 16 0 1 2 3 4 5 6 7 ב - arr[0] ב יושב ערך שהוא המספר השלם 3 arr[1] - יושב

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 8: פונקציות שבוע שעבר... מערכים מיזוג מערכים ממויינים מערכים דו-ממדיים מבוא לשפת סי - תירגול 8 2 תוכנייה פונקציות ברמת התקשורת הבין-אישית חלוקה לתתי בעיות בדומה למפתח של ספר קריאות גבוהה

קרא עוד

Microsoft Word - review-sol-Prog123.doc

Microsoft Word - review-sol-Prog123.doc typedef struct node{ int val; struct node *left, *right; node; שאלה עצים בינאריים נתונה ההגדרה הבאה: תרגול חזרה כתוב פונקציה length), node *recreate_tree(int *in, int *post, int אשר מקבלת כפרמטרים מצביע

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 2: מבוא לתיכנות ב- C 1 תוכנייה משתנים קלט/פלט משפטי תנאי מבוא למדעי המחשב מ' - תירגול 3 2 משתנים 3 משתנים- תמונת הזיכרון הזיכרון כתובת התא #1000 10-4 לא מאותחל 67 לכל תא בזיכרון

קרא עוד

Programming

Programming קורס תכנות שיעור עשירי: מיונים, חיפושים, קצת ניתוח זמני ריצה, קצת תיקון טעויות ועוד על רשימות 1 רשימה מקושרת רשימה היא אוסף סדור של פעולות רשימה לעומת מערך ערכים 3 5 7 9 typedef struct node { int data;

קרא עוד

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדיקות אחרונות לפני מסירה )עמודים 8-11( מבנה השאלון 5

קרא עוד

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

תשעדד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..( תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(http://mdle.tau.ac.il/) בלבד הגשת התרגיל תעשה במערכת ה- mdle aviv

קרא עוד

מבוא לתכנות ב- JAVA תרגול 11

מבוא לתכנות ב- JAVA  תרגול 11 מבוא לתכנות ב- JAVA תרגול 11 רשימה מקושרת אוסף סדור של איברים מאותו טיפוס. קודקוד ברשימה )Node( מכיל את המידע + הצבעה לקודקוד הבא ברשימה data next first רשימה :)List( מיוצגת ע"י מצביע לאיבר הראשון ברשימה

קרא עוד

Microsoft PowerPoint - rec1.ppt

Microsoft PowerPoint - rec1.ppt תכנות מונחה עצמים בשפת ++C תר גול מ ספר 1 אוהד ב ר זילי אוניברסיטת תל א ביב חדש חדיש ומחודש תוספות של + +C לשפ ת C 1 #include Hello World using namespace std; int main() cout

קרא עוד

Microsoft Word - c_SimA_MoedA2006.doc

Microsoft Word - c_SimA_MoedA2006.doc מבוא למדעי המחשב בחינת מועד א', סמסטר א' תשס"ו,..006 מרצה: מתרגלת: גב' יעל כהן-סיגל. גב' ליאת לוונטל. משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות:. יש לענות על כל השאלות.. קראו

קרא עוד

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו 4 דפי נוסחאות. בדקו שכל העמודים ברשותכם. ב. משך המבחן

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java אלכסיי זגלסקי ויעל אמסטרדמר 1 בירוקרטיה אלכסיי זגלסקי שעת קבלה: שני 13:00-14:00, בתיאום מראש משרד: בניין הנדסת תוכנה, חדר 209 יעל אמסטרדמר שעת קבלה: חמישי 15:00-16:00,

קרא עוד

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

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

קרא עוד

תרגול 3 - מערכים

תרגול 3 - מערכים Introduction to Programming in Java תרגול 5 1 היום בתרגול void מה הן פונקציות הגדרת פונקציה, קריאה לפונקציה העברת ארגומנטים, החזרת ערך או דוגמאות 2 מוטיבציה לעיתים,אנו נזקקים לבצע פעולה מסוימת או לעשות

קרא עוד

Microsoft Word - Ass1Bgu2019b_java docx

Microsoft Word - Ass1Bgu2019b_java docx ת ר ג י ל 1 ב ק ו ר ס מ ב ו א לתכנות 202.1.9031 JAVA סמסטר ב, ת נ א י ם ו ל ו ל א ו ת תאריך אחרון להגשה בציון מלא : 02.04.19 עד שעה : 23:55, כ ל יום איחור ל א מ א ו ש ר א ו ח ל ק ממנו מודריד 10 נקודות

קרא עוד

Slide 1

Slide 1 מבוא לתכנות ב- JAVA תרגול 5 מה בתרגול מחרוזות מערכים דו ממדיים מחרוזות (Strings) מחרוזת היא רצף של תווים. immutable על מנת ליצור ולטפל במחרוזות נשתמש במחלקה String למחלקה String מתודות שונות שמאפשרות פעולות

קרא עוד

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

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

קרא עוד

תוכן העניינים

תוכן העניינים הוצאת חושבים קדימה הילה קדמן # חלק ב יעוץ מקצועי: חיים אברבוך מותאם לתכנית הלימודים החדשה בבתי הספר התיכוניים מהדורה חמישית הוצאת חושבים קדימה ת.ד. 1293 רעות 71908 www.kadman.net הילה קדמן 0522 525527

קרא עוד

234114

234114 )234117 )234114 \ סמסטר חורף תשע"ז 2017 מבחן מסכם מועד א', 21 לפברואר 2 3 4 1 1 מספר סטודנט: רשום/ה לקורס: משך המבחן: 3 שעות. חומר עזר: אין להשתמש בכל חומר עזר. הנחיות כלליות: מלאו את הפרטים בראש דף זה

קרא עוד

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. בדקו שכל העמודים ברשותכם. ב. משך המבחן שלוש שעות (180

קרא עוד

תוכן העניינים

תוכן העניינים הוצאת חושבים קדימה הילה קדמן חלק ב יעוץ מקצועי: חיים אברבוך מותאם לתכנית הלימודים החדשה בבתי הספר התיכוניים מהדורה חמישית הוצאת חושבים קדימה ת.ד. 1293 רעות 71908 www.kadman.net הילה קדמן 0522 525527 kadman11@gmail.com

קרא עוד

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמטרים של מערכים היא by reference וכן דוגמאות שמראות שמשתנים

קרא עוד

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m 1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_ הפונקציה preg all הפונקציה str_replace הפונקציה preg_replace 2 מהי תבנית

קרא עוד

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) ( פתרון 000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : num = 3, sif = r האם ספרת האחדות של sif שווה ל- num num 3 sif (1)-() (3) () אמת ) = ( 3 3 יודפס: 3. ב. פתרון שאלה 11 עבור הערכים: עבור סעיף

קרא עוד

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

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

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 3: טיפוסים והמרות 1 מה היה שבוע שעבר? משתנים קלט/פלט scanf( ו- printf ( Redirection The Input Buffer 2 תוכנייה טיפוסי משתנים קלט/פלט מעוצב המרה בין טיפוסים קבועים 3 חישוב ממוצע בין שני

קרא עוד

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

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה תאריך פרסום: 01.01.15 תאריך הגשה: 15.01.15 מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש להגיש בזוגות. -העבודה חייבת להיות מוקלדת. -הקובץ חייב

קרא עוד

Slide 1

Slide 1 1 אובייקטים היום בתרגול: 2.)objects מחלקות )classes( ואובייקטים )מופעים, )fields( שדות המחלקה שיטות הכמסה )methods של מחלקה. ( class מחלקה - עד עכשיו השתמשנו בעיקר בטיפוסים מובנים ופונקציות המבצעות חישובים

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java 1 מנהלות אתר הקורס: http://courses.cs.tau.ac.il/software1/1516b/ מתרגלים: ברית יונגמן )שעת קבלה: שלישי ב- 8:00 בתיאום מראש( לנה דנקין )שעת קבלה: שלישי ב- 17:00,

קרא עוד

Microsoft Word - דוגמאות ב

Microsoft Word - דוגמאות ב הפקולטה למדעי המחשב פרופ' חיים גוטסמן, מר רן רובינשטיין עומר סטרולוביץ, כרמי גרושקו, אלכסנדר ליבוב, מיכאל בלטקסה, ראידה נעאמנה, שי מרקנטי, גיא שקד הטכניון - מכון טכנולוגי לישראל 3.10.2011 מבוא לתכנות מערכות

קרא עוד

Slide 1

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

קרא עוד

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מספיק עמדות לכולם ולכן מומלץ לעבוד ביחידים). במהלך המעבדה יהיה עליכם לבצע משימות. אם תצטרכו עזרה בשלב

קרא עוד

Microsoft Word - pitaron222Java_2007.doc

Microsoft Word - pitaron222Java_2007.doc 1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א a mul k k a פלט b זוגי? b :1 Ï 3 1 5 1 5 F קלט: 3, 5, 8, 4 20 2 8 40 40 3 4 4 F :2 Ï m x x 0 פלט 70 x 50 0 א. 10 F 1 64 2 2 51 30 F -4 F ב. ג. 1- (כל

קרא עוד

תרגיל בית מספר 1#

תרגיל בית מספר 1# ב 4 תרגיל בית מספר - 1 להגשה עד 72 באוקטובר בשעה ::725 קיראו בעיון את הנחיות העבודה וההגשה המופיעות באתר הקורס, תחת התיקייה.assignments חריגה מההנחיות תגרור ירידת ציון / פסילת התרגיל. הנחיות והערות ספציפיות

קרא עוד

Microsoft PowerPoint - rec3.ppt

Microsoft PowerPoint - rec3.ppt תכנו ת מונח ה עצ מים משתני מחלקה, עצמים מוכלים ועצמים מוצבעים א וה ד ברז יל י א ונ יברס י ט ת תל אביב משתנ י מח ל קה Static Members משתני מחלקה members) (static משתנים סטטיים מוגדרי ם בתוך מח לקה ואולם

קרא עוד

פייתון

פייתון שיעור 12: מילונים ברק גונן 1 או מילון, :hash table או,dictionary זוגות של מפתחות keys וערכים values מילון מוגדר על ידי סוגריים מסולסלים { } לדוגמה: מילון שמכיל ציונים, המפתח הוא מספר ת.ז ערך מפתח הגדרה

קרא עוד

Slide 1

Slide 1 Introduction to Programming in C תרגול 7 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאת זיכרון דינאמית Malloc free תאור הזיכרון של המחשב: מצביעים ניתן לחשוב על זיכרון המחשב

קרא עוד

Slide 1

Slide 1 מבוא למחשב בשפת C צעדים הרצאה 2: ראשונים בשפת C מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב". עודכן ע"י דן רביב נכתב על-ידי טל כהן, נערך ע"י

קרא עוד

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום תוכן העניינים: פרק 2 3 צמצומים ומימושים של פונקציות בוליאניות 2 צמצומים של פונקציות באמצעות מפת קרנו: 2 שאלות: 2 תשובות סופיות: 4 צמצום באמצעות שיטת 6:QM שאלות: 6 תשובות סופיות: 7 מימושים בעזרת פונקציות

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב שימוש במחסנית - מחשבון תוכן עניינים prefix כתיבת ביטויים ב-,infix ו- postfix postfix prefix,infix ביטויים ב- כתיבת ו- infix נוסח כתיבה ב- (operator אנו רגילים לכתוב ביטויים חשבוניים כדוגמת

קרא עוד

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

תרגול מס' 7: תרגילים מתקדמים ברקורסיה תרגול מס' :7,Memoization Quicksort ותרגילים מתקדמים ברקורסיה תרגול זה הוא התרגול האחרון שיהיה לכם בנושא רקורסיה והוא מכיל מגוון שאלות מתקדמות בנשוא זה. השאלות שיכלול תרגול זה: Memoization פיבונאצ'י Quicksort

קרא עוד

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

אוניברסיטת בן-גוריון המחלקה למדעי המחשב בוחן במבנים בדידים וקומבינטוריקה פרופ' מתיא כץ, דר עופר נימן, דר סטוארט סמית, דר נתן רובין, גב' אוניברסיטת בן-גוריון המחלקה למדעי המחשב בוחן במבנים בדידים וקומבינטוריקה 0-- פרופ' מתיא כ"ץ, ד"ר עופר נימן, ד"ר סטוארט סמית, ד"ר נתן רובין, גב' יעל שטיין טל באומל, לילך חייטמן-ירושלמי, נתי פטר, ד ר סטוארט

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב תכנות מונחה אובייקטים תוכן עניינים טיפוסי נתונים מורכבים המחלקה String תזכורת לשימוש שעשינו במחלקה String str = new String( Hello ); s.o.p(str.tostring()); s.o.p(str.charat(4)); s.o.p(str.equals(

קרא עוד

תרגיל בית מספר 1#

תרגיל בית מספר 1# תרגיל בית מספר - 3 להגשה עד 15 באפריל בשעה 23:55 קיראו בעיון את הנחיות העבודה וההגשה המופיעות באתר הקורס, תחת התיקייה.assignments חריגה מההנחיות תגרור ירידת ציון / פסילת התרגיל. הגשה: תשובותיכם יוגשו בקובץ

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 3 תרגול מס' מתודות ותיכון לפי חוזים חוזה בין ספק ללקוח חוזה בין ספק ללקוח מגדיר עבור כל שרות: תנאי ללקוח - "תנאי קדם" precondition - - תנאי לספק "תנאי אחר".postcondition לקוח ספק 2 תנאי קדם )preconditions(

קרא עוד

שעור 6

שעור 6 שעור 6 Open addressing אין רשימות מקושרות. (נניח שהאלמנטים מאוחסנים בטבלה עצמה, לחילופין קיים מצביע בהכנסה המתאימה לאלמנט אם אין שרשור). ב- addressing open הטבלה עלולה להימלא ב- factor α load תמיד. במקום

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב המחלקה Object תוכן עניינים Object הורשה והמחלקה ערך שם טיפוס DynamicIntArray da data size incrementsize DynamicArray תזכורת - Object[] data; int size; int incrementsize; DynamicArray זה

קרא עוד

úåëðä 1 - çæøä

úåëðä 1 - çæøä Arrays and Strings מערך - אוסף משתנים בעלי שם משותף. הפנייה לכל איבר נעשית ע י אינדקס. ב- C מערך מוגדר בזיכרון רציף. האיבר הראשון נמצא בכתובת הנמוכה. לדוגמא, אם a מוגדר החל מכתובת :1000 char a[7]; Element

קרא עוד

שאלה 2. תכנות ב - CShell

שאלה 2. תכנות ב - CShell ביה"ס למדעי המחשב 4.2.2018 האקדמית נתניה מבחן מועד א' יסודות מערכות פתוחות סמסטר חורף, תשע"ח משך המבחן: שלוש וחצי שעות. יש לענות על כל השאלות. מותר השימוש בחומר עזר כלשהו, פרט למחשבים, (מחשבונים מותר).

קרא עוד

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

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

קרא עוד

מבוא למדעי המחשב

מבוא למדעי המחשב מבוא למדעי המחשב 202-1-1011 תאריך הבחינה: שמות המרצים: 16.3.2011 מר שי זקוב ד"ר פז כרמי פרופ' מייק קודיש ד"ר חן קיסר ד"ר צחי רוזן שם הקורס: מבוא למדעי המחשב מספר הקורס: שנה: 202-1-1011 2011 משך הבחינה:

קרא עוד

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt מרחב הש מות (namespace) אוהד ברזילי אוניברסיטת תל אביב מה בתו כנית? לקוח וס פק במערכת תוכנה ממשקים הכרת מרחב השמות מניעת תלות פוטנציאלית בין רכיבים במערכת ע"י עיצוב חלופי של מבנה הממשקים 2 א ונ י ב רס

קרא עוד

אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, אביב 2019 תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות הע

אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, אביב 2019 תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות הע תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות העבודה וההגשה המופיעות באתר הקורס, תחת התיקייה.assignments חריגה מההנחיות תגרור ירידת ציון / פסילת התרגיל. הגשה: תשובותיכם יוגשו

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש המתרגם משימה: תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם 2 שאלות האם כבר יש

קרא עוד

Slide 1

Slide 1 תוכנייה How a computer works? חומרת המחשב רקע תוכנה רקע צעדים ראשונים בשפת C * חלקים מפרק זה מבוססים על: http://www.eingang.org/lecture 4 חומרה )Hardware( אנו מוקפים מחשבים,,Laptop טלוויזיה,,DVD ועוד.

קרא עוד

מתכונת עיצוב 3013

מתכונת עיצוב 3013 מדעי המחשב פרק ראשון Java שאלה 1 שאלה 1 נכתב ע"י ראמי ג'באלי C# Java 2 א. שאלה ב. הערה: במבחן כתוב שיש שלשה אחת בלבד של פנסים כאלו. ולמרות זאת נשאיר את המשתנה הבוליאני כך שאם נמצאו הפנסים בתחילת המערך

קרא עוד

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח תכנות דינמי פרק 6, סעיפים -6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח בסוף את הטוב ביותר. סכום חלקי sum) (subset הקלט: סדרה

קרא עוד

מס' ת"ז מס' מחברת מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' , מועד ב, 23/3/2018 מרצים: דניאל דויטש,

מס' תז מס' מחברת מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביהס למדעי המחשב, אונ' תל אביב סמסטר א' , מועד ב, 23/3/2018 מרצים: דניאל דויטש, מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' 2017-18, מועד ב, 23/3/2018 מרצים: דניאל דויטש, אמיר רובינשטיין מתרגלים: מיכל קליינבורט, אמיר גלעד משך הבחינה: 3 שעות.

קרא עוד