1 void Xint lines int static blank int

  • Slides: 20
Download presentation

1 תרגיל פתרון void X(int lines){ int static blank; int I; for (i=0; i<blank;

1 תרגיל פתרון void X(int lines){ int static blank; int I; for (i=0; i<blank; i++) putchar(' '); putchar('*'); if(lines==1){ puts(""); return; } for (i=0; i<lines-2; i++) putchar(' '); puts("*"); blank++; X(lines-2); blank--; for (i=0; i<blank; i++) putchar(' '); putchar('*'); for (i=0; i<lines-2; i++) putchar(' '); puts("*"); } 4

 רקורסיה 2 תרגיל : הבאה התכנית • נתונה int what 1(char *str){ if(*str

רקורסיה 2 תרגיל : הבאה התכנית • נתונה int what 1(char *str){ if(*str == '')return 0; if(*str >= '0' && *str <='9') return what 1(str+1)*10 + *str - '0'; ? הנ"ל התכנית של הפלט מה return what 1(str+1); } הפונקציה של יעודה מה אחד במשפט הסבר ? what 1 void what 2(char **arr, int num){ if(!num) הפונקציה של יעודה מה אחד במשפט הסבר return; ? what 2 printf("%dn", what 1(*arr)); what 2(arr+1, num-1); } void main(){ char *a[ ]={"e=mc 2", "1=one, 2=two, 3=three", "one, two, three", "(4+5)*5 -7=38"}; what 2(a, 4); } 5

3 תרגיל פתרון tree. Node* free. Min(tree. Node* root){ tree. Node *temp; if(!root) return

3 תרגיל פתרון tree. Node* free. Min(tree. Node* root){ tree. Node *temp; if(!root) return NULL; if(! root->left){ temp = root ->right; free(root); return temp; } root->left = free. Min(root ->left); return root; } 9

4 תרגיל פתרון void blank(char *sentence){ int i=0, j=0, first=0; while(sentence[i]){ if(sentence[i]!=' '){ first=1;

4 תרגיל פתרון void blank(char *sentence){ int i=0, j=0, first=0; while(sentence[i]){ if(sentence[i]!=' '){ first=1; sentence[j++]=sentence[i++]; } else if(first){ sentence[j++]=sentence[i++]; first=0; } else i++; } if(sentence[j]==' ') j--; sentence[j]=''; 11 }

: פתרון ( נקודות 10) – א void update(FILE * history, FILE * new_year,

: פתרון ( נקודות 10) – א void update(FILE * history, FILE * new_year, char * final_rain){ FILE * update; int flag 1 = 0, flagold, flagnew; int month 10, ave 20, ave 30; int month 1, av 2, av 3; char zone 10[16], zone 20[16], zone 30[16]; char zone 1[16], zone 2[16], zone 3[16]; int new_ave 1, new_ave 2, new_ave 3; if(!(update = fopen(final_rain, "w"))){ printf("No openingn"); exit(1); 14 }

 א סעיף פתרון המשך while((flagnew = fscanf(new_year, "%2 d%15[^$]%4 d%15[^$]%*c", &month 1, zone

א סעיף פתרון המשך while((flagnew = fscanf(new_year, "%2 d%15[^$]%4 d%15[^$]%*c", &month 1, zone 1, &ave 1, zone 2, &ave 2, zone 3, &ave 3)) == 7){ while(((flagold = fscanf(history, "%2 d%15[^$]%4 d%15[^$]%*c", &month 10, zone 10, &ave 10, zone 20, &ave 20, zone 30, &ave 30))== 7 ) && (month 1 != month 10)) { new_ave 1 = (ave 10 * 10 )/11; new_ave 2 = (ave 20 * 10 )/11; new_ave 3 = (ave 30 * 10 )/11; fprintf(update, "%2 d%15 s%4 d%15 s%4 dn", &month 1, zone 1, new_ave 1, zone 2, new_ave 2, zone 3, new_ave 3); } if(flagold == 7){ new_ave 1 = (ave 10 * 10 + ave 1)/11; new_ave 2 = (ave 20 * 10 + ave 2)/11; new_ave 3 = (ave 20 * 10 + ave 3)/11; fprintf(update, "%2 d%15 s%4 d%15 s%4 dn", &month 1, zone 1, new_ave 1, zone 2, new_ave 2, zone 3, new_ave 3); } else break; } 15

 א סעיף פתרון המשך while((flagold == 7) && (flagold =fscanf(history, "%2 d%15[^$]%4 d%15[^$]%*c",

א סעיף פתרון המשך while((flagold == 7) && (flagold =fscanf(history, "%2 d%15[^$]%4 d%15[^$]%*c", &month 10, zone 10, &ave 10, zone 20, &ave 20, zone 30, &ave 30)== 7)){ new_ave 1 = (ave 10 * 10 )/11; new_ave 2 = (ave 20 * 10 )/11; new_ave 3 = (ave 30 * 10 )/11; fprintf(update, "%2 d%15 s%4 d%15 s%4 dn", &month 1, zone 1, new_ave 1, zone 2, new_ave 2, zone 3, new_ave 3); } fclose(update); } 16

: פתרון ( נקודות 10) – ב //help function : add node sorting the

: פתרון ( נקודות 10) – ב //help function : add node sorting the list node * insert_sort(node *head, node *new. Node) { node *curr. Node; if (!head) return new. Node; if (new. Node->key < head->key) { new. Node->next = head; return new. Node; } curr. Node = head; while (curr. Node->next && new. Node->key > curr. Node->next->key) currnode = currnode->next; new. Node->next = curr. Node->next; curr. Node->next = new. Node; return head; } 17

 ב סעיף פתרון המשך node * zone_sort(char* final_rain){ FILE * update; node *

ב סעיף פתרון המשך node * zone_sort(char* final_rain){ FILE * update; node * temp, *aux , *head = NULL; int month, av 1, av 2, av 3; char zone 1[16], zone 2[16], zone 3[16]; int new_ave; if(!(update = fopen(final_rain, "r"))){ printf("No openingn"); exit(1); } for (i=0; i < 12 ; i++){ fscanf(history, "%2 d%15[^$]%4 d%15[^$]%*c", &month, zone 1, &ave 1, zone 2, &ave 2, zone 3, &ave 3); new_ave = (zone 1 + zone 2 + zone 3)/3; temp = (node *) malloc(sizeof(node)); temp->zone_average = new_ave; temp->next = NULL; insert_sort(head, temp); } return head; }

 עצים שאלת פתרון Tree. Node* mirror(Tree. Node* root){ Tree. Node* new. Root; if

עצים שאלת פתרון Tree. Node* mirror(Tree. Node* root){ Tree. Node* new. Root; if (!root) return root; new. Root = (Tree. Node*) malloc(sizeof(Tree. Node)); new. Root->val = root->val; new. Root->left = mirror(root->right); new. Root->right = mirror(root->left); return new. Root; } 20