SlideShare ist ein Scribd-Unternehmen logo
1 von 22
‫למבחן‬ ‫שימושיות‬ ‫פונקציות‬ ‫רשימת‬
‫מחרוזות‬.................................................................................................................................1
‫גלובליות‬ ‫פונקציות‬.....................................................................................................................3
‫מערכים‬...................................................................................................................................4
‫רקורסיות‬.................................................................................................................................8
...........................................................................................................................................11
...........................................................................................................................................11
‫יעילות‬...................................................................................................................................13
‫מצביעים‬................................................................................................................................14
‫רשימות‬.................................................................................................................................15
‫ממוינת‬ ‫רשימה‬........................................................................................................................17
‫מקושרת‬ ‫רשימה‬ ‫על‬ ‫ריצה‬ ‫זמני‬ ‫של‬ ‫סיבוכיות‬.................................................................................18
‫דו-סטרית‬ ‫רשימה‬....................................................................................................................18
‫בינארים‬ ‫עצים‬........................................................................................................................20
‫בינארים‬ ‫עצים‬ ‫סריקת‬...............................................................................................................21
‫ממוינים‬ ‫עצים‬.........................................................................................................................22
‫מחרוזות‬
‫העתקת‬‫מחרוזת‬:‫פעולת‬‫השמה‬‫במחרוזת‬‫נעשית‬‫בעזרת‬‫הפונקציה‬strcpy‫הפונקציה‬ .
strcpy‫עושה‬‫העתק‬‫של‬‫הארגומנט‬‫השני‬‫שלה‬‫ומציבה‬‫אותו‬‫במשתנה‬‫שהוא‬‫הארגומנט‬
.‫הראשון‬
‫יש‬‫צורך‬‫להגדיר‬‫בראש‬‫התוכנית‬#include <string.h<
strcpy (s, “what is your shoe size ?“) ;
•‫פעולת‬‫הקלט‬‫נראית‬:‫כך‬
Cin >> s;
‫פעולות‬‫על‬‫מחרוזות‬
1
•‫ישנן‬‫מספר‬‫פעולות‬‫שונות‬ (‫)פונקציות‬‫שאפשר‬‫לבצע‬‫על‬‫מחרוזות‬‫בשפת‬c.++
‫תוצאה‬ ‫פונקציה‬
‫מחזירה‬‫את‬‫התו‬‫במיקום‬і‫במחרוזת‬s‫)תו‬ .‫ראשון‬‫נמצא‬‫במיקום‬0( S [ і[
‫מחזירה‬‫את‬‫אורכה‬‫של‬‫המחרוזת‬s. Strlen (s(
‫מחזירה‬0‫אם‬‫המחרוזות‬s-‫ו‬t‫תו‬ ,‫זהות‬‫אחרי‬‫אם‬ .‫תו‬‫המחרוזת‬s
‫גדולה‬‫מהמחרוזת‬t‫יוחזר‬1‫ואחרת‬ ,‫יוחזר‬1.-
Strcmp (s,t(
‫מעתיקה‬‫את‬‫המחרוזת‬t‫לתוך‬‫המחרוזת‬s‫ומחזירה‬‫ערך‬.‫זה‬ Strcpy (s,t(
‫מעתיקה‬‫את‬n‫התווים‬‫הראשונים‬‫של‬‫המחרוזת‬t‫לתוך‬‫המחרוזת‬s
‫ומחזירה‬‫ערך‬.‫זה‬
Strncpy (s,t,n(
•‫בדיקת‬‫האם‬‫התוו‬‫במחרוזת‬‫הוא‬‫אות‬
for (int і = 0 ; і<max ; і++)
{
( isalpha (str[i]) ) // function from cytpe that check if the char is a letter
}
‫הערה‬‫יש‬ :‫צורך‬‫להגדיר‬‫בתחילת‬‫התוכנית‬‫את‬‫הספרייה‬:#include <cytpe.h<
•‫פונקצית‬‫הפיכת‬‫אות‬‫קטנה‬‫לגדולה‬‫ולהפך‬
2
void OpositeLetter (char str [ ] )
{
for ( int i=0; str[i] != NULL; і++ ) //until the NULLl character
{
if ( isalpha (str[i]) ) //function from cytpe that check if the char is a letter
}
if ( (str[i]>='a') && (str[i]<=’z’) )
}
str[i]=(str[i]-32)
continue;
{
if ((str[i]>='A') && (str[i]<=’Z’) )
{
str[i]=(str[i]+32)
continue;
}
}
}
}
•‫ניקוי‬‫מחרוזת‬‫מתווים‬‫שאינם‬‫אותיות‬
void cleaning_str (char str [n])
{
int ok_chars = 0 ;
for (int i=0; str[i] != ‘0’ ; і++)
{
if (isalpha(str[i])) //check if the character is an alphabetic
str [ ok_chars++ ] = str [ і ]
}
Str [ ok_chars++ ] = '0 '; // terminate the string
}
‫גלובליות‬ ‫פונקציות‬
•‫החלפת‬‫סדר‬‫שני‬‫משתנים‬)swap(
3
void swap (int &a, int &b)
{
int temp;
temp = b;
a = b;
b = temp;
}
•‫חזקה‬‫)מתוך‬‫ספרית‬#include <math.h<(
‫מבצע‬X‫בחזקת‬Y.
pow(x,y);
•‫שורש‬‫)מתוך‬‫ספרית‬#include <math.h<(
sqrt(y);
•‫בדיקה‬‫האם‬‫המספר‬‫זוגי‬‫או‬‫לא‬
int even (int num)
}
return (num % 2 == 0 ? 1 : 0); //if Condition true return 1 else return 0
{
•‫הפיכת‬‫מחרוזת‬-‫ל‬integer‫)ערך‬‫מספרי‬‫שעליו‬‫ניתן‬‫לבצע‬‫פעולות‬(‫מתמטיות‬
‫מצריך‬‫שימוש‬‫בספרית‬#>include <stdlib.h
int num = atoi (str) ; //ascii to integer
float num = atof (str) ; //ascii to float
‫מערכים‬
•‫איתחול‬‫מערך‬‫לאפס‬
4
Void init (int A [ ],const int n)
{
for (int і=0; і<n; і++)
{
str[ і ] = 0;
}
}
•‫קריאת‬‫נתונים‬-‫מה‬User‫לתוך‬‫מערך‬
void read (int A [n], const int n )
{
for (int і=0 ; і<n ; і++)
{
cin>> A [ і ];
}
}
•‫הדפסת‬‫מערך‬
void write (int A [n], const int n )
{
for (int і=0 ; і<n ; і++)
{
cout<< A[і]<<“t “ ;
}
}
•‫קריאת‬‫נתונים‬-‫מה‬User‫לתוך‬‫מערך‬‫דו‬‫ממיידי‬(‫)מטריצה‬
5
void read (int A [n] [n], const int n )
{
for (int і=0 ; і<n ; і++)
{
for (int j=0; j<n; j++)
{
cin>> A [ і ] [ j ];
}
}
•‫הדפסת‬‫מערך‬‫דו‬‫ממיידי‬(‫מטריצה‬ )
void write (int A [n] [n], const int n )
{
for (int і=0 ; і<n ; і++)
{
for (int j=0; j<n; j++)
{
cout<<”t “<< A [ і ] [ j ];
}
cout<<endl;
}
•‫ספירת‬‫שכנים‬‫לקורדינאטה‬‫ספציפית‬‫במערך‬‫דו‬‫ממיידי‬(‫)מטריצה‬
6
Int CountNeighbours (int Matrix[N][N], const int N, int i, int j(
{
int count = 0;
int x,y;
for(int row = 0; row<3;++row(
{
)for (int column = 0; column <3; ++column
{
if (row == 1 && column == 1(
continue;
x = i+row-1;
y = j+column-1;
//Legal cell (if (x>=0 && x<N && y>=0 && y<N
];count += Matrix[x][y
{
{
return count ;
}
•‫פונקצית‬‫חיפוש‬‫במערך‬‫דו‬‫ממיידי‬)‫לא‬‫ממוין‬(
int if_exists (int a[n][m], int num)
}
for (int i=0; i<n; і++)
}
for (int j=0; j<m;j++)
{
if (a[i] [j] == num;
return 1;
{
{
return 0;
{
•‫פונקציה‬‫זו‬‫סופרת‬‫כמה‬‫מספרים‬‫עם‬‫אותו‬‫ערך‬‫יש‬‫במערך‬‫)טווח‬‫מספרים‬‫מי‬0–9.(
‫הפונקציה‬‫מכניסה‬‫למערך‬‫חדש‬)B(‫את‬‫כמות‬‫המספרים‬‫מכל‬‫ערך‬.
7
void check_M_into_N (int A[ ],int B[ ] ,const int n ,const int m)
}
int var = 0;
for(int x = 0; x<n; x++)
{
if (A[x]<n(
{
var =A[x[;
if (var<=m(
{
B [var] ++ ;
{
{
{
{
‫רקורסיות‬
8
•‫חזקה‬‫בעזרת‬‫שימוש‬‫ברקורסיה‬
float apowerb (float a,int b)
}
if (b == 0) //stop condition
return 1;
return (a * apowerb (a,b-1)); //recursive call
{
•‫חיבור‬‫כל‬‫אברי‬‫המספר‬:‫)לדג‬435< =11.(
int sum_f (int n(
}
if (n<10(
return (n(;
else
return (n%10) + sum_f (n/10(; //recursive call
{
•‫מציאת‬‫המחלק‬‫המשותף‬‫המקסימלי‬‫בין‬‫שני‬‫מספרים‬)gcd(
Int gcd (int n, int m)
{
if ( (n<0) || (m<0) )
return 1;
if (n == m)
return n;
if (n < m)
return (gcd (n, m-n));
return (gcd (m, n-m));
}
•‫חיבור‬‫כל‬‫התאים‬‫במערך‬)‫מחזירה‬‫את‬‫חיבור‬‫כל‬‫התאים‬(
9
int sum_rec (int a [ ],int n(
}
if (n==1( //stop condition
return a [0[;
else
return ( sum_rec (a,n-1) + a[n-1 [ ) ; //recursive call
{
•‫מציאת‬‫האיבר‬‫הכי‬‫גדול‬‫במערך‬)FMC = Find Max Cell(
іnt find_max_cell (int a [ ] , int n)
{
if n==1) //stop conditoin
return (a [ n-1 ]; // return a [ 0 ]
else
if (a [ n-1 ] > find_max_cell (a, n-1) //search for the biggest cell
return (a [ n-1 ] ;
else
return find_max_cell (a, n-1);
}
•‫מציאת‬‫זוג‬‫התאים‬‫הצמודים‬‫אשר‬‫נותנים‬‫לנו‬‫את‬‫הסכום‬‫הכי‬‫גדול‬‫על‬‫ידי‬‫חיבורם‬
int sum_max_couple (int a[ ],int n(
}
if (n==1) //stop conditoin
return (a [ n-1 ]); // a [ 0]
else
if ((a [ n-1 ]+ a [n-2]) > sum_max_couple (a, n-1((
return (a [ n-1 ] + a [n-2] ) ;
else
return sum_max_couple (a, n-1(;
{
•‫פירוק‬‫מספר‬‫למספרים‬‫הקטנים‬‫ממנו‬‫עד‬-‫ל‬1‫וסכימת‬‫ערכיהם‬
‫קלט‬ :‫)לדג‬=4‫הפונקציה‬:‫תחזיר‬4+3+2+1=10
10
Int sum (int limit)
{
if (limit == 1)
return 1;
return (limit + sum (limit – 1); //recursive call
•‫הפונקציה‬‫מחשבת‬‫את‬‫המספר‬‫המתקבל‬‫ממכפלת‬‫כל‬‫הספרות‬‫של‬num
int son_calc (int num)
{
if (num<10) //stop condition
return (num(;
else
return (num%10) * son_calc (num/10); // recursion call
}
•‫הפונקציה‬‫מחשבת‬‫את‬‫סדרת‬‫פיבונאצ"י‬‫לדג‬‫קלט‬ :=1123581321...
‫עמוד‬:253
Int fib (int n)
{
if (n < 3 ) //stop condition
return 1;
else
return ( fib (n-2) + fib ( n-1) ); //recursive call
•‫הדפסת‬‫משפט‬‫מהסוף‬‫להתחלה‬‫)עמ‬256.(
Void reverse ( )
{
char ch;
cin>>ch;
if ( !cin.eof() )
reverse (); //read another character - recursively
cout<<ch;
}
‫היפוך‬‫מספר‬‫קלט‬ :‫לדג‬ )=235‫ידפיס‬ ,532‫עמוד‬ (258
11
Void rev_num (int n(
}
cout<<n % 10;
if ( (n / 10 ) > 0(
rev_num (n/10;(
{
•‫הפונקציה‬‫מקבלת‬‫מערך‬‫ומחזירה‬1‫עם‬‫ערך‬‫כל‬‫אחד‬‫מאיברי‬‫המערך‬‫גדול‬‫מסכום‬
‫קודמיו‬‫)משתמשת‬‫בשני‬‫פונקציות‬(‫רקורסיביות‬
Int is_order_vec (int vec[ ] ,int n)
{
if (n == 1 )
return 1;
else
if (vec[ n-1] > sum_vec(vec, n-1) )
return is_order_vec (vec, n-1);
else
return 0;
}
Int sum_vec (int vev[ ] , int n)
{
if ( n == 1)
return vec[0];
else
return (sum_vec (vec,n-1) + vec[n-1]);
}
12
‫המערך‬ ‫גודל‬
IXEDN
‫יעילות‬
‫להל"ן‬‫הפונקציות‬‫לטיפול‬‫ביעילות‬)‫לא‬‫לרשימות‬‫מקושרות‬(
‫עמוד‬316–318
‫הפונקציות‬‫הם‬:
Void read_input (int a [ ]);
‫נועד‬‫לקבלת‬‫נתונים‬‫לתוך‬‫מערך‬‫מהקלט‬
Void write_output (int a[ ] );
‫נועד‬‫להדפסת‬‫המערך‬.‫הממויין‬
Void merge_sort (int a[ ] ,int low, int high);
‫מבצע‬‫מיון‬‫מיזוג‬‫על‬‫מערך‬‫)סיבוכיות‬=O (n log n.(
‫משתמש‬‫בפונקציות‬:merge.
‫עמוד‬317.
Void merge (int a, int left,int mid, int right);
‫ממזג‬‫שני‬‫מערכים‬‫ממוינים‬‫לאחד‬‫)נקרא‬‫על‬‫ידי‬merge_sort.(
Void copy_arr (int from[ ] ,int to [ ] , int ind, int length,int c_ind);
‫פונקציה‬‫להעתקת‬‫ערכים‬‫מי‬‫מערך‬‫אחד‬‫לשני‬‫והיא‬‫נקראת‬‫על‬‫ידי‬‫פונקצית‬merge
)318.(
13
‫מצביעים‬
‫הפונקציות‬‫הנ"ל‬‫היא‬‫מתוך‬‫עמוד‬341.
•‫הפונקציה‬‫מקבלת‬pointer‫למחרוזת‬str‫ומחליפה‬‫אות‬‫קטנה‬‫לאות‬‫גדולה‬
Char *string_upprcase (char *s);
14
‫רשימות‬
•‫קריאת‬‫רשימה‬)list‫מהמשתמש‬ (‫עם‬‫מספר‬‫תאים‬‫קבוע‬)max(
‫עמוד‬351)‫בכדי‬‫לקרוא‬‫מספרים‬‫יש‬‫להחליף‬-‫ל‬number‫כמובן‬‫גם‬-‫ב‬struct(
//This function get a pointer address of a list, and read the list from the input
void read ( element *&list, const int max(
}
element *p,*last;
list=new element;
p=list;
cout<<"Enter a letter : “ ;
cin>>p->letter;
for (int cnt=0; cnt<max; cnt++)
}
p->next =new element;
last= p;
p=p->next;
cout<<"Enter a letter : “ ;
cin>> p-> letter;
{
delete (p(;
last -> next = NULL;
}
‫להל"ן‬‫רשימת‬‫פונקציות‬‫מתוך‬‫הספר‬‫עמודים‬)350–354.(
Void read (element *&list);
‫קוראת‬‫רשימה‬.‫מהקלט‬
‫עמוד‬:351
Void write (element *list);
‫מדפיסה‬‫את‬‫הרשימה‬.‫המקושרת‬
‫עמוד‬:351
Int length (element *list);
‫מקבלת‬list‫ומחזירה‬‫את‬‫האורך‬.‫שלה‬
‫עמוד‬:351
15
Int position (element *list, int num);
‫מקבלת‬‫רשימה‬‫ומספר‬‫ומחזירה‬‫את‬‫מיקומו‬
‫עמוד‬:352
Void remove (element *&list,int position );
‫מקבלת‬‫רשימה‬‫מיקום‬ +‫ומוחקת‬‫את‬‫המספר‬‫באותו‬.‫מקום‬
‫עמוד‬:352.
Void del (element *&list, int num);
‫מקבלת‬‫רשימה‬+‫מספר‬‫מבצעת‬ ,‫את‬‫החיפוש‬‫אחרי‬‫האיבר‬‫ומוחקת‬ ,‫אותו‬.‫מהרשימה‬
‫עמוד‬:358
Void insert (element *&list,int new_num,int position);
‫מכניסה‬‫את‬‫האיבר‬‫החדש‬-‫ל‬position‫הפונקציה‬ ,‫שקיבלנו‬‫נעזרת‬‫לביצוע‬‫זאת‬‫על‬‫ידי‬‫פונקצית‬
add‫ופונקצית‬ele.
‫עמוד‬:353–354.
Element *ele (element *list,int position);
‫מקבלת‬‫רשימה‬‫ומיקום‬‫ומחזירה‬pointer‫לאותו‬‫מיקום‬)position.(
‫עמוד‬:353.
Void add (int new_num, element *&list,element *this_el);
‫מקבלת‬‫מספר‬‫ומיקום‬ ,‫רשמיה‬ ,‫חדש‬‫כתובת‬ /‫הכנסה‬‫ומכניסה‬ ,‫את‬-‫ה‬new_num‫לאותו‬‫מיקום‬
‫עמוד‬:354.
Element *succ (element*list,element *this_el)
‫מקבלת‬‫איבר‬‫ומחזירה‬ ,‫ברשימה‬‫מצביע‬‫לאיבר‬‫הבא‬‫)מחזירה‬pointer.(
‫עמוד‬:355.
Element *pred (element*list,element *this_el)
‫מקבלת‬‫איבר‬‫ברשימה‬‫ומחזירה‬‫מצביע‬‫לאיבר‬‫הקודם‬‫)מחזירה‬pointer.(
‫עמוד‬:356.
16
Element *search (element*list,int num);
‫מקבלת‬‫רשימה‬‫ומספר‬‫ומחזירה‬‫מצביע‬‫לאיבר‬‫בו‬‫מאוחסן‬.‫האיבר‬
‫עמוד‬:356.
Int count ( element *list,int num);
‫מקבלת‬‫רשימה‬‫ומספר‬‫וסופרת‬ ,‫כמה‬‫פעמים‬‫מופיע‬‫ערך‬‫מסוים‬‫)המספר‬num‫ברשימה‬ (list.
‫עמוד‬:387)10.6)
Void delete_list (element *&list);
‫מקבלת‬‫רשימה‬list‫ומוחקת‬‫את‬‫כל‬‫איברה‬‫מהזיכרון‬‫)המצביע‬‫לראשה‬‫יהיה‬‫בסיום‬‫הפונקציה‬‫בעל‬
‫ערך‬NULL,
‫עמוד‬:387)10.7.(
Void append (element *&a , element *&b);
‫מקבלת‬‫שתי‬‫רשימות‬a-‫ו‬b‫ומצרפת‬ ,‫את‬‫הרשימה‬b‫לסופה‬‫של‬‫הרשימה‬a‫)ערכו‬‫של‬‫המצביע‬
‫על‬‫ראש‬b‫צריך‬‫להיות‬‫בסיום‬‫הפונקציה‬NULL.
‫עמוד‬:387)10.8(
‫ממוינת‬ ‫רשימה‬
Void merge_sort (element *&list)
‫מיון‬‫מיזוג‬‫של‬‫רשימה‬‫מקושרת‬‫משתמשת‬ )‫בפונקציה‬second_front_back_split‫המקבלת‬
‫רשימה‬‫ומחזירה‬‫שתי‬‫רשימות‬.‫ממוינות‬
‫כמו‬‫כן‬‫משתמשת‬‫הפונקציה‬-‫ב‬rec_dorted_list
‫עמוד‬:364.
Void seond_front_back_split (element *source,element *&front, element *&back;(
‫מקבלת‬‫רשימה‬‫ומפצלת‬‫אותה‬.‫לשניים‬
‫עמוד‬361.
17
Element *rec_sorted_merge (element *a,element *b);
‫ממזגת‬‫בין‬‫שני‬‫רשימות‬.‫ממוינות‬
‫עמוד‬:363.
Void *read_sort ();
‫מקבלת‬‫רשימה‬‫ריקה‬‫ומכניסה‬‫את‬‫המספר‬‫כל‬‫פעם‬‫בצורה‬‫היא‬ .‫ממוינית‬‫קוראת‬‫לפונקציה‬
search‫בכדי‬‫להכניס‬‫כל‬‫איבר‬‫למקומו‬‫הנכון‬‫בכדי‬‫שהרשימה‬‫תישאר‬.‫ממויינת‬
‫עמוד‬:362.
Element *search (element *list , int num);
‫מקבלת‬‫רשימה‬‫ומספר‬‫ומחפשת‬‫את‬‫המקום‬‫המתאים‬‫ומחזירה‬ ,‫להכניסו‬pointer‫לרשימה‬
.‫הממוינת‬
‫עמוד‬:362–363.
Void remove_duplicates (element *&list);
‫מקבלת‬‫רשימה‬‫ממוינת‬‫ומוחקת‬‫את‬‫כל‬‫המופעים‬‫הכפולים‬‫של‬‫יש‬ .‫האיבר‬‫לסרוק‬‫את‬‫הרשימה‬
‫פעם‬‫אחת‬.‫בלבד‬
‫עמוד‬:388)10.9.(
‫מקושרת‬ ‫רשימה‬ ‫על‬ ‫ריצה‬ ‫זמני‬ ‫של‬ ‫סיבוכיות‬
‫עמוד‬:364–365.
‫דו-סטרית‬ ‫רשימה‬
Void add_to_double (int new_num, element *&list,element *this_el);
‫מכניסה‬‫לרשימה‬‫דו‬‫סיטרית‬list‫איבר‬‫חדש‬‫עם‬‫המספר‬new_num‫לאחר‬‫האיבר‬‫המוצבע‬‫על‬
‫ידי‬this_el
‫עמוד‬:366–367
Void remove_from_double (element *&list , int position);
‫מקבלת‬‫רשומה‬‫דו-סיטרית‬list‫ומספר‬і (( position‫ומוחקת‬‫את‬‫האיבר‬‫במיקום‬-‫ה‬і
‫מהרשימה‬list.
‫עמוד‬:388–389.
18
Void print_in_reverse (element *list)
‫מקבלת‬‫רשימה‬‫דו-סיטרית‬list‫ומדפיסה‬‫את‬‫אבירה‬‫מהסוף‬.‫להתחלה‬
‫עמוד‬:389.
19
‫בינארים‬ ‫עצים‬
Void init_empty (node *&root);
‫מאתחלת‬‫עץ‬.‫ריק‬
‫עמוד‬:374.
Void init_node (node *&root,int num);
‫מאתחלת‬‫עץ‬‫עם‬‫צומת‬.‫אחד‬
‫עמוד‬374.
Void build (node *&root, node *left, node *right, int num);
‫מקבלת‬‫תת‬‫עץ‬‫תת‬ ,‫שמאלי‬‫עץ‬‫ימני‬‫ומספר‬‫ובונה‬‫מהם‬‫עץ‬‫בינארי‬‫שבשורשו‬.‫המספר‬
‫עמוד‬:374.
Node *left (node *root);
‫מחזירה‬‫מצביע‬‫לתת‬‫עץ‬.‫השמאלי‬
‫עמוד‬:374.
Node *right (node *root);
‫מחזירה‬‫מצביע‬‫לתת‬‫עץ‬.‫ימני‬
‫עמוד‬:374.
Void add_lson (node *root,node *new_tree);
‫מוסיף‬‫את‬‫המצביע‬‫כבן‬‫שמאלי‬‫)עמוד‬ .‫לשורש‬375.(
Void add_rson (node *root,node *new_tree);
‫מוסיף‬‫את‬‫המצביע‬‫כבן‬‫ימני‬‫)עמוד‬ .‫לשורש‬375.(
Void delete_lson (node *root);
‫מוחק‬‫את‬‫הבן‬‫השמאלי‬‫של‬‫הצומת‬
‫עמוד‬:375.
Void delete_rson (node *root);
‫מוחק‬‫את‬‫הבן‬‫ימני‬‫של‬‫הצומת‬
‫עמוד‬:375.
Int retrieve_root ( node *root);
‫מחזיר‬‫את‬‫הערך‬‫המאוחסן‬.‫בשורש‬
‫עמוד‬:375.
Void modify_root (node *root , int new_num);
‫משנה‬‫את‬‫הערך‬‫המאוחסן‬‫בשורש‬
‫עמוד‬:376.
20
Int empty_tree (node *root);
‫מחזיר‬‫ערך‬1‫עם‬‫העץ‬‫ו‬ ,‫ריק‬0.‫אחרת‬
‫עמוד‬:376.
Int no_of_nodes (node *root);
‫מונה‬‫את‬‫מספר‬‫הצמתים‬.‫בעץ‬
‫עמוד‬:376.
Int no_of_leaves (node *root);
‫מונה‬‫את‬‫מספר‬‫העלים‬.‫בעץ‬
‫עמוד‬:376.
Int is_leaf (node *T);
‫מקבל‬‫צומת‬‫ומחזיר‬‫תשובה‬‫אם‬‫הוא‬‫עלה‬
‫עמוד‬:377.
Int is_in_tree (node *T,int a);
‫מקבל‬‫מספר‬‫ועץ‬‫)לא‬‫ומחזיר‬ (‫ממויין‬‫תשובה‬‫אם‬‫המספר‬‫נמצא‬.‫בעץ‬
‫עמוד‬:377.
Int descendant (node *T,int x, int y);
‫מקבל‬‫מצביע‬‫לעץ‬T‫ושני‬‫מספרים‬x-‫ו‬y‫ובודקת‬ ,‫האם‬‫קיימם‬‫שני‬‫צמתים‬‫בעץ‬T‫המכילים‬
‫את‬x-‫ו‬y‫כך‬ ,-‫ש‬y‫הוא‬‫צאצא‬‫של‬–x.
‫עמוד‬:390)10.18/(
Int min ( int a ,int b, int c);
‫מקבלת‬‫עץ‬T‫ומחזירה‬‫את‬‫האיבר‬‫הקטן‬‫ביותר‬.‫בעץ‬
:‫עמוד‬390)10.19(
Int max (( int a ,int b,);
‫מקבלת‬‫עץ‬T‫ומחזירה‬‫את‬.‫גובההו‬
‫עמוד‬:391)10.20.(
‫בינארים‬ ‫עצים‬ ‫סריקת‬
‫הדפסת‬‫תכולת‬‫העץ‬‫בשלושה‬‫צורות‬.
21
‫סריקת‬pre order:
void print_pre (node *root);
‫עמוד‬:379.
‫סריקת‬in order:
void print_in (node *root);
‫עמוד‬:380.
‫סריקת‬post order:
void print_post (node *root);
‫עמוד‬:380.
‫ממוינים‬ ‫עצים‬
Node *build_sorted_tree ( ) ;
‫בונה‬‫עץ‬‫בינארי‬‫ממויין‬‫מרשימת‬‫מספרים‬‫הערך‬ ,‫בקלט‬‫הראשון‬‫יאוחסן‬‫בשורש‬.‫העץ‬
‫היא‬‫משתמשת‬‫בפונקציה‬init_empty ( t‫לאיתחול‬ (‫עץ‬‫ריק‬‫ולפונקציה‬add_to_sorted
‫שתכניס‬‫את‬‫המספר‬‫למקומו‬‫בעץ‬.‫הממויין‬
‫עמוד‬:382.
Void add_to_sorted ( node *&root, int num);
‫תכניס‬‫את‬‫המספר‬‫למקומו‬‫בעץ‬‫הממויין‬.
‫עמוד‬:382.
Node *search_sorted (node *root, int x);
‫חיפוש‬‫ערך‬‫בעץ‬.‫ממויין‬
‫עמוד‬:381.
22

Weitere ähnliche Inhalte

Was ist angesagt?

Bài tập nguyên lý máy
Bài tập nguyên lý máyBài tập nguyên lý máy
Bài tập nguyên lý máyNguyen Van Phuong
 
261507976 cotation-de-fabrication
261507976 cotation-de-fabrication261507976 cotation-de-fabrication
261507976 cotation-de-fabricationabdelkader SLIMANE
 
Giao trinh do_ga
Giao trinh do_gaGiao trinh do_ga
Giao trinh do_gaKỳ Kỳ
 
Vetitë mekanike të materialeve dhe detaleve-Përkthim
Vetitë mekanike të materialeve dhe detaleve-PërkthimVetitë mekanike të materialeve dhe detaleve-Përkthim
Vetitë mekanike të materialeve dhe detaleve-PërkthimRrahim Maksuti
 
Metodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKE
Metodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKEMetodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKE
Metodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKERrahim Maksuti
 
Tp4:Simulation numérique d’un écoulement dans une conduite
Tp4:Simulation numérique d’un écoulement dans une conduiteTp4:Simulation numérique d’un écoulement dans une conduite
Tp4:Simulation numérique d’un écoulement dans une conduiteMATENE ELHACENE
 
đồ án chi tiết máy-nguyễn hải sứ
đồ án chi tiết máy-nguyễn hải sứđồ án chi tiết máy-nguyễn hải sứ
đồ án chi tiết máy-nguyễn hải sứNguyễn Hải Sứ
 
Thuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tải
Thuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tảiThuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tải
Thuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tảihttps://www.facebook.com/garmentspace
 

Was ist angesagt? (13)

Bài tập nguyên lý máy
Bài tập nguyên lý máyBài tập nguyên lý máy
Bài tập nguyên lý máy
 
261507976 cotation-de-fabrication
261507976 cotation-de-fabrication261507976 cotation-de-fabrication
261507976 cotation-de-fabrication
 
Les familles logiques
Les familles logiquesLes familles logiques
Les familles logiques
 
3rd Semester Mechanical Engineering (June/July-2015) Question Papers
3rd Semester Mechanical Engineering  (June/July-2015) Question Papers3rd Semester Mechanical Engineering  (June/July-2015) Question Papers
3rd Semester Mechanical Engineering (June/July-2015) Question Papers
 
Giao trinh do_ga
Giao trinh do_gaGiao trinh do_ga
Giao trinh do_ga
 
Vetitë mekanike të materialeve dhe detaleve-Përkthim
Vetitë mekanike të materialeve dhe detaleve-PërkthimVetitë mekanike të materialeve dhe detaleve-Përkthim
Vetitë mekanike të materialeve dhe detaleve-Përkthim
 
Metodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKE
Metodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKEMetodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKE
Metodat jokonvencionale të përpunimit me prerje-INXHINIERIA EKONOMIKE
 
Tp4:Simulation numérique d’un écoulement dans une conduite
Tp4:Simulation numérique d’un écoulement dans une conduiteTp4:Simulation numérique d’un écoulement dans une conduite
Tp4:Simulation numérique d’un écoulement dans une conduite
 
Soudage
Soudage Soudage
Soudage
 
Đề tài: Thiết kế hộp giảm tốc bánh răng côn dùng cho băng tải
Đề tài: Thiết kế hộp giảm tốc bánh răng côn dùng cho băng tảiĐề tài: Thiết kế hộp giảm tốc bánh răng côn dùng cho băng tải
Đề tài: Thiết kế hộp giảm tốc bánh răng côn dùng cho băng tải
 
đồ án chi tiết máy-nguyễn hải sứ
đồ án chi tiết máy-nguyễn hải sứđồ án chi tiết máy-nguyễn hải sứ
đồ án chi tiết máy-nguyễn hải sứ
 
Thuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tải
Thuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tảiThuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tải
Thuyết minh đồ án môn chi tiết máy thiết kế trạm dẫn động xích tải
 
Li̇neer cebi̇r 06
Li̇neer cebi̇r 06Li̇neer cebi̇r 06
Li̇neer cebi̇r 06
 

Andere mochten auch

Cloud final
Cloud finalCloud final
Cloud finalLeo Fan
 
One’s own self pr
One’s own self prOne’s own self pr
One’s own self prJinwoo Jeong
 
Observation lab
Observation labObservation lab
Observation labAna Frade
 
EVERY8D財運哼通包
EVERY8D財運哼通包EVERY8D財運哼通包
EVERY8D財運哼通包EVERY8D 許
 
Comic story
Comic storyComic story
Comic storypapagiat
 
Ad Art Sign Company Brochure1sm
Ad Art Sign Company Brochure1smAd Art Sign Company Brochure1sm
Ad Art Sign Company Brochure1smDougHead
 
Bobbio noberto-teoria-da-norma-jurc3addica
Bobbio noberto-teoria-da-norma-jurc3addicaBobbio noberto-teoria-da-norma-jurc3addica
Bobbio noberto-teoria-da-norma-jurc3addicaCláudio Rennó
 
El principito ayelen gaspar
El principito ayelen gasparEl principito ayelen gaspar
El principito ayelen gasparayelengaspar
 
Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...
Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...
Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...Atai Rabby
 
Interpersonal Communication
Interpersonal CommunicationInterpersonal Communication
Interpersonal CommunicationSze Tan
 
Butlers model-simplified-1200482942556217-2[1]
Butlers model-simplified-1200482942556217-2[1]Butlers model-simplified-1200482942556217-2[1]
Butlers model-simplified-1200482942556217-2[1]Ron Hekman
 
Small Biz CEDC Orientation
Small Biz CEDC OrientationSmall Biz CEDC Orientation
Small Biz CEDC OrientationMary Phillips
 
Image Fusion - Approaches in Hardware
Image Fusion - Approaches in HardwareImage Fusion - Approaches in Hardware
Image Fusion - Approaches in HardwareKshitij Agrawal
 
Logo moselectro concepts, 3-d version
Logo moselectro   concepts, 3-d versionLogo moselectro   concepts, 3-d version
Logo moselectro concepts, 3-d versionsandro2001
 
WordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-Edo
WordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-EdoWordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-Edo
WordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-EdoYoshinori Kobayashi
 
Sales & Cust Service Traning ea4 ss
Sales & Cust Service Traning ea4 ssSales & Cust Service Traning ea4 ss
Sales & Cust Service Traning ea4 ssAbrahamAW
 

Andere mochten auch (20)

Cloud final
Cloud finalCloud final
Cloud final
 
One’s own self pr
One’s own self prOne’s own self pr
One’s own self pr
 
Observation lab
Observation labObservation lab
Observation lab
 
EVERY8D財運哼通包
EVERY8D財運哼通包EVERY8D財運哼通包
EVERY8D財運哼通包
 
Comic story
Comic storyComic story
Comic story
 
Ad Art Sign Company Brochure1sm
Ad Art Sign Company Brochure1smAd Art Sign Company Brochure1sm
Ad Art Sign Company Brochure1sm
 
Pixels_Camp
Pixels_CampPixels_Camp
Pixels_Camp
 
Bobbio noberto-teoria-da-norma-jurc3addica
Bobbio noberto-teoria-da-norma-jurc3addicaBobbio noberto-teoria-da-norma-jurc3addica
Bobbio noberto-teoria-da-norma-jurc3addica
 
El principito ayelen gaspar
El principito ayelen gasparEl principito ayelen gaspar
El principito ayelen gaspar
 
Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...
Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...
Identifying Antibiotics posing potential Health Risk: Microbial Resistance Sc...
 
Interpersonal Communication
Interpersonal CommunicationInterpersonal Communication
Interpersonal Communication
 
Zakat pembersih harta
Zakat pembersih hartaZakat pembersih harta
Zakat pembersih harta
 
Butlers model-simplified-1200482942556217-2[1]
Butlers model-simplified-1200482942556217-2[1]Butlers model-simplified-1200482942556217-2[1]
Butlers model-simplified-1200482942556217-2[1]
 
Trends ams
Trends amsTrends ams
Trends ams
 
Small Biz CEDC Orientation
Small Biz CEDC OrientationSmall Biz CEDC Orientation
Small Biz CEDC Orientation
 
Image Fusion - Approaches in Hardware
Image Fusion - Approaches in HardwareImage Fusion - Approaches in Hardware
Image Fusion - Approaches in Hardware
 
Power
PowerPower
Power
 
Logo moselectro concepts, 3-d version
Logo moselectro   concepts, 3-d versionLogo moselectro   concepts, 3-d version
Logo moselectro concepts, 3-d version
 
WordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-Edo
WordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-EdoWordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-Edo
WordPressもくもく勉強会について― WordPressもくもく倶楽部 at コワーキングスペース 茅場町 Co-Edo
 
Sales & Cust Service Traning ea4 ss
Sales & Cust Service Traning ea4 ssSales & Cust Service Traning ea4 ss
Sales & Cust Service Traning ea4 ss
 

רשימת פונקציות שימושיות c++

  • 1. ‫למבחן‬ ‫שימושיות‬ ‫פונקציות‬ ‫רשימת‬ ‫מחרוזות‬.................................................................................................................................1 ‫גלובליות‬ ‫פונקציות‬.....................................................................................................................3 ‫מערכים‬...................................................................................................................................4 ‫רקורסיות‬.................................................................................................................................8 ...........................................................................................................................................11 ...........................................................................................................................................11 ‫יעילות‬...................................................................................................................................13 ‫מצביעים‬................................................................................................................................14 ‫רשימות‬.................................................................................................................................15 ‫ממוינת‬ ‫רשימה‬........................................................................................................................17 ‫מקושרת‬ ‫רשימה‬ ‫על‬ ‫ריצה‬ ‫זמני‬ ‫של‬ ‫סיבוכיות‬.................................................................................18 ‫דו-סטרית‬ ‫רשימה‬....................................................................................................................18 ‫בינארים‬ ‫עצים‬........................................................................................................................20 ‫בינארים‬ ‫עצים‬ ‫סריקת‬...............................................................................................................21 ‫ממוינים‬ ‫עצים‬.........................................................................................................................22 ‫מחרוזות‬ ‫העתקת‬‫מחרוזת‬:‫פעולת‬‫השמה‬‫במחרוזת‬‫נעשית‬‫בעזרת‬‫הפונקציה‬strcpy‫הפונקציה‬ . strcpy‫עושה‬‫העתק‬‫של‬‫הארגומנט‬‫השני‬‫שלה‬‫ומציבה‬‫אותו‬‫במשתנה‬‫שהוא‬‫הארגומנט‬ .‫הראשון‬ ‫יש‬‫צורך‬‫להגדיר‬‫בראש‬‫התוכנית‬#include <string.h< strcpy (s, “what is your shoe size ?“) ; •‫פעולת‬‫הקלט‬‫נראית‬:‫כך‬ Cin >> s; ‫פעולות‬‫על‬‫מחרוזות‬ 1
  • 2. •‫ישנן‬‫מספר‬‫פעולות‬‫שונות‬ (‫)פונקציות‬‫שאפשר‬‫לבצע‬‫על‬‫מחרוזות‬‫בשפת‬c.++ ‫תוצאה‬ ‫פונקציה‬ ‫מחזירה‬‫את‬‫התו‬‫במיקום‬і‫במחרוזת‬s‫)תו‬ .‫ראשון‬‫נמצא‬‫במיקום‬0( S [ і[ ‫מחזירה‬‫את‬‫אורכה‬‫של‬‫המחרוזת‬s. Strlen (s( ‫מחזירה‬0‫אם‬‫המחרוזות‬s-‫ו‬t‫תו‬ ,‫זהות‬‫אחרי‬‫אם‬ .‫תו‬‫המחרוזת‬s ‫גדולה‬‫מהמחרוזת‬t‫יוחזר‬1‫ואחרת‬ ,‫יוחזר‬1.- Strcmp (s,t( ‫מעתיקה‬‫את‬‫המחרוזת‬t‫לתוך‬‫המחרוזת‬s‫ומחזירה‬‫ערך‬.‫זה‬ Strcpy (s,t( ‫מעתיקה‬‫את‬n‫התווים‬‫הראשונים‬‫של‬‫המחרוזת‬t‫לתוך‬‫המחרוזת‬s ‫ומחזירה‬‫ערך‬.‫זה‬ Strncpy (s,t,n( •‫בדיקת‬‫האם‬‫התוו‬‫במחרוזת‬‫הוא‬‫אות‬ for (int і = 0 ; і<max ; і++) { ( isalpha (str[i]) ) // function from cytpe that check if the char is a letter } ‫הערה‬‫יש‬ :‫צורך‬‫להגדיר‬‫בתחילת‬‫התוכנית‬‫את‬‫הספרייה‬:#include <cytpe.h< •‫פונקצית‬‫הפיכת‬‫אות‬‫קטנה‬‫לגדולה‬‫ולהפך‬ 2
  • 3. void OpositeLetter (char str [ ] ) { for ( int i=0; str[i] != NULL; і++ ) //until the NULLl character { if ( isalpha (str[i]) ) //function from cytpe that check if the char is a letter } if ( (str[i]>='a') && (str[i]<=’z’) ) } str[i]=(str[i]-32) continue; { if ((str[i]>='A') && (str[i]<=’Z’) ) { str[i]=(str[i]+32) continue; } } } } •‫ניקוי‬‫מחרוזת‬‫מתווים‬‫שאינם‬‫אותיות‬ void cleaning_str (char str [n]) { int ok_chars = 0 ; for (int i=0; str[i] != ‘0’ ; і++) { if (isalpha(str[i])) //check if the character is an alphabetic str [ ok_chars++ ] = str [ і ] } Str [ ok_chars++ ] = '0 '; // terminate the string } ‫גלובליות‬ ‫פונקציות‬ •‫החלפת‬‫סדר‬‫שני‬‫משתנים‬)swap( 3
  • 4. void swap (int &a, int &b) { int temp; temp = b; a = b; b = temp; } •‫חזקה‬‫)מתוך‬‫ספרית‬#include <math.h<( ‫מבצע‬X‫בחזקת‬Y. pow(x,y); •‫שורש‬‫)מתוך‬‫ספרית‬#include <math.h<( sqrt(y); •‫בדיקה‬‫האם‬‫המספר‬‫זוגי‬‫או‬‫לא‬ int even (int num) } return (num % 2 == 0 ? 1 : 0); //if Condition true return 1 else return 0 { •‫הפיכת‬‫מחרוזת‬-‫ל‬integer‫)ערך‬‫מספרי‬‫שעליו‬‫ניתן‬‫לבצע‬‫פעולות‬(‫מתמטיות‬ ‫מצריך‬‫שימוש‬‫בספרית‬#>include <stdlib.h int num = atoi (str) ; //ascii to integer float num = atof (str) ; //ascii to float ‫מערכים‬ •‫איתחול‬‫מערך‬‫לאפס‬ 4
  • 5. Void init (int A [ ],const int n) { for (int і=0; і<n; і++) { str[ і ] = 0; } } •‫קריאת‬‫נתונים‬-‫מה‬User‫לתוך‬‫מערך‬ void read (int A [n], const int n ) { for (int і=0 ; і<n ; і++) { cin>> A [ і ]; } } •‫הדפסת‬‫מערך‬ void write (int A [n], const int n ) { for (int і=0 ; і<n ; і++) { cout<< A[і]<<“t “ ; } } •‫קריאת‬‫נתונים‬-‫מה‬User‫לתוך‬‫מערך‬‫דו‬‫ממיידי‬(‫)מטריצה‬ 5
  • 6. void read (int A [n] [n], const int n ) { for (int і=0 ; і<n ; і++) { for (int j=0; j<n; j++) { cin>> A [ і ] [ j ]; } } •‫הדפסת‬‫מערך‬‫דו‬‫ממיידי‬(‫מטריצה‬ ) void write (int A [n] [n], const int n ) { for (int і=0 ; і<n ; і++) { for (int j=0; j<n; j++) { cout<<”t “<< A [ і ] [ j ]; } cout<<endl; } •‫ספירת‬‫שכנים‬‫לקורדינאטה‬‫ספציפית‬‫במערך‬‫דו‬‫ממיידי‬(‫)מטריצה‬ 6
  • 7. Int CountNeighbours (int Matrix[N][N], const int N, int i, int j( { int count = 0; int x,y; for(int row = 0; row<3;++row( { )for (int column = 0; column <3; ++column { if (row == 1 && column == 1( continue; x = i+row-1; y = j+column-1; //Legal cell (if (x>=0 && x<N && y>=0 && y<N ];count += Matrix[x][y { { return count ; } •‫פונקצית‬‫חיפוש‬‫במערך‬‫דו‬‫ממיידי‬)‫לא‬‫ממוין‬( int if_exists (int a[n][m], int num) } for (int i=0; i<n; і++) } for (int j=0; j<m;j++) { if (a[i] [j] == num; return 1; { { return 0; { •‫פונקציה‬‫זו‬‫סופרת‬‫כמה‬‫מספרים‬‫עם‬‫אותו‬‫ערך‬‫יש‬‫במערך‬‫)טווח‬‫מספרים‬‫מי‬0–9.( ‫הפונקציה‬‫מכניסה‬‫למערך‬‫חדש‬)B(‫את‬‫כמות‬‫המספרים‬‫מכל‬‫ערך‬. 7
  • 8. void check_M_into_N (int A[ ],int B[ ] ,const int n ,const int m) } int var = 0; for(int x = 0; x<n; x++) { if (A[x]<n( { var =A[x[; if (var<=m( { B [var] ++ ; { { { { ‫רקורסיות‬ 8
  • 9. •‫חזקה‬‫בעזרת‬‫שימוש‬‫ברקורסיה‬ float apowerb (float a,int b) } if (b == 0) //stop condition return 1; return (a * apowerb (a,b-1)); //recursive call { •‫חיבור‬‫כל‬‫אברי‬‫המספר‬:‫)לדג‬435< =11.( int sum_f (int n( } if (n<10( return (n(; else return (n%10) + sum_f (n/10(; //recursive call { •‫מציאת‬‫המחלק‬‫המשותף‬‫המקסימלי‬‫בין‬‫שני‬‫מספרים‬)gcd( Int gcd (int n, int m) { if ( (n<0) || (m<0) ) return 1; if (n == m) return n; if (n < m) return (gcd (n, m-n)); return (gcd (m, n-m)); } •‫חיבור‬‫כל‬‫התאים‬‫במערך‬)‫מחזירה‬‫את‬‫חיבור‬‫כל‬‫התאים‬( 9
  • 10. int sum_rec (int a [ ],int n( } if (n==1( //stop condition return a [0[; else return ( sum_rec (a,n-1) + a[n-1 [ ) ; //recursive call { •‫מציאת‬‫האיבר‬‫הכי‬‫גדול‬‫במערך‬)FMC = Find Max Cell( іnt find_max_cell (int a [ ] , int n) { if n==1) //stop conditoin return (a [ n-1 ]; // return a [ 0 ] else if (a [ n-1 ] > find_max_cell (a, n-1) //search for the biggest cell return (a [ n-1 ] ; else return find_max_cell (a, n-1); } •‫מציאת‬‫זוג‬‫התאים‬‫הצמודים‬‫אשר‬‫נותנים‬‫לנו‬‫את‬‫הסכום‬‫הכי‬‫גדול‬‫על‬‫ידי‬‫חיבורם‬ int sum_max_couple (int a[ ],int n( } if (n==1) //stop conditoin return (a [ n-1 ]); // a [ 0] else if ((a [ n-1 ]+ a [n-2]) > sum_max_couple (a, n-1(( return (a [ n-1 ] + a [n-2] ) ; else return sum_max_couple (a, n-1(; { •‫פירוק‬‫מספר‬‫למספרים‬‫הקטנים‬‫ממנו‬‫עד‬-‫ל‬1‫וסכימת‬‫ערכיהם‬ ‫קלט‬ :‫)לדג‬=4‫הפונקציה‬:‫תחזיר‬4+3+2+1=10 10
  • 11. Int sum (int limit) { if (limit == 1) return 1; return (limit + sum (limit – 1); //recursive call •‫הפונקציה‬‫מחשבת‬‫את‬‫המספר‬‫המתקבל‬‫ממכפלת‬‫כל‬‫הספרות‬‫של‬num int son_calc (int num) { if (num<10) //stop condition return (num(; else return (num%10) * son_calc (num/10); // recursion call } •‫הפונקציה‬‫מחשבת‬‫את‬‫סדרת‬‫פיבונאצ"י‬‫לדג‬‫קלט‬ :=1123581321... ‫עמוד‬:253 Int fib (int n) { if (n < 3 ) //stop condition return 1; else return ( fib (n-2) + fib ( n-1) ); //recursive call •‫הדפסת‬‫משפט‬‫מהסוף‬‫להתחלה‬‫)עמ‬256.( Void reverse ( ) { char ch; cin>>ch; if ( !cin.eof() ) reverse (); //read another character - recursively cout<<ch; } ‫היפוך‬‫מספר‬‫קלט‬ :‫לדג‬ )=235‫ידפיס‬ ,532‫עמוד‬ (258 11
  • 12. Void rev_num (int n( } cout<<n % 10; if ( (n / 10 ) > 0( rev_num (n/10;( { •‫הפונקציה‬‫מקבלת‬‫מערך‬‫ומחזירה‬1‫עם‬‫ערך‬‫כל‬‫אחד‬‫מאיברי‬‫המערך‬‫גדול‬‫מסכום‬ ‫קודמיו‬‫)משתמשת‬‫בשני‬‫פונקציות‬(‫רקורסיביות‬ Int is_order_vec (int vec[ ] ,int n) { if (n == 1 ) return 1; else if (vec[ n-1] > sum_vec(vec, n-1) ) return is_order_vec (vec, n-1); else return 0; } Int sum_vec (int vev[ ] , int n) { if ( n == 1) return vec[0]; else return (sum_vec (vec,n-1) + vec[n-1]); } 12 ‫המערך‬ ‫גודל‬ IXEDN
  • 13. ‫יעילות‬ ‫להל"ן‬‫הפונקציות‬‫לטיפול‬‫ביעילות‬)‫לא‬‫לרשימות‬‫מקושרות‬( ‫עמוד‬316–318 ‫הפונקציות‬‫הם‬: Void read_input (int a [ ]); ‫נועד‬‫לקבלת‬‫נתונים‬‫לתוך‬‫מערך‬‫מהקלט‬ Void write_output (int a[ ] ); ‫נועד‬‫להדפסת‬‫המערך‬.‫הממויין‬ Void merge_sort (int a[ ] ,int low, int high); ‫מבצע‬‫מיון‬‫מיזוג‬‫על‬‫מערך‬‫)סיבוכיות‬=O (n log n.( ‫משתמש‬‫בפונקציות‬:merge. ‫עמוד‬317. Void merge (int a, int left,int mid, int right); ‫ממזג‬‫שני‬‫מערכים‬‫ממוינים‬‫לאחד‬‫)נקרא‬‫על‬‫ידי‬merge_sort.( Void copy_arr (int from[ ] ,int to [ ] , int ind, int length,int c_ind); ‫פונקציה‬‫להעתקת‬‫ערכים‬‫מי‬‫מערך‬‫אחד‬‫לשני‬‫והיא‬‫נקראת‬‫על‬‫ידי‬‫פונקצית‬merge )318.( 13
  • 15. ‫רשימות‬ •‫קריאת‬‫רשימה‬)list‫מהמשתמש‬ (‫עם‬‫מספר‬‫תאים‬‫קבוע‬)max( ‫עמוד‬351)‫בכדי‬‫לקרוא‬‫מספרים‬‫יש‬‫להחליף‬-‫ל‬number‫כמובן‬‫גם‬-‫ב‬struct( //This function get a pointer address of a list, and read the list from the input void read ( element *&list, const int max( } element *p,*last; list=new element; p=list; cout<<"Enter a letter : “ ; cin>>p->letter; for (int cnt=0; cnt<max; cnt++) } p->next =new element; last= p; p=p->next; cout<<"Enter a letter : “ ; cin>> p-> letter; { delete (p(; last -> next = NULL; } ‫להל"ן‬‫רשימת‬‫פונקציות‬‫מתוך‬‫הספר‬‫עמודים‬)350–354.( Void read (element *&list); ‫קוראת‬‫רשימה‬.‫מהקלט‬ ‫עמוד‬:351 Void write (element *list); ‫מדפיסה‬‫את‬‫הרשימה‬.‫המקושרת‬ ‫עמוד‬:351 Int length (element *list); ‫מקבלת‬list‫ומחזירה‬‫את‬‫האורך‬.‫שלה‬ ‫עמוד‬:351 15
  • 16. Int position (element *list, int num); ‫מקבלת‬‫רשימה‬‫ומספר‬‫ומחזירה‬‫את‬‫מיקומו‬ ‫עמוד‬:352 Void remove (element *&list,int position ); ‫מקבלת‬‫רשימה‬‫מיקום‬ +‫ומוחקת‬‫את‬‫המספר‬‫באותו‬.‫מקום‬ ‫עמוד‬:352. Void del (element *&list, int num); ‫מקבלת‬‫רשימה‬+‫מספר‬‫מבצעת‬ ,‫את‬‫החיפוש‬‫אחרי‬‫האיבר‬‫ומוחקת‬ ,‫אותו‬.‫מהרשימה‬ ‫עמוד‬:358 Void insert (element *&list,int new_num,int position); ‫מכניסה‬‫את‬‫האיבר‬‫החדש‬-‫ל‬position‫הפונקציה‬ ,‫שקיבלנו‬‫נעזרת‬‫לביצוע‬‫זאת‬‫על‬‫ידי‬‫פונקצית‬ add‫ופונקצית‬ele. ‫עמוד‬:353–354. Element *ele (element *list,int position); ‫מקבלת‬‫רשימה‬‫ומיקום‬‫ומחזירה‬pointer‫לאותו‬‫מיקום‬)position.( ‫עמוד‬:353. Void add (int new_num, element *&list,element *this_el); ‫מקבלת‬‫מספר‬‫ומיקום‬ ,‫רשמיה‬ ,‫חדש‬‫כתובת‬ /‫הכנסה‬‫ומכניסה‬ ,‫את‬-‫ה‬new_num‫לאותו‬‫מיקום‬ ‫עמוד‬:354. Element *succ (element*list,element *this_el) ‫מקבלת‬‫איבר‬‫ומחזירה‬ ,‫ברשימה‬‫מצביע‬‫לאיבר‬‫הבא‬‫)מחזירה‬pointer.( ‫עמוד‬:355. Element *pred (element*list,element *this_el) ‫מקבלת‬‫איבר‬‫ברשימה‬‫ומחזירה‬‫מצביע‬‫לאיבר‬‫הקודם‬‫)מחזירה‬pointer.( ‫עמוד‬:356. 16
  • 17. Element *search (element*list,int num); ‫מקבלת‬‫רשימה‬‫ומספר‬‫ומחזירה‬‫מצביע‬‫לאיבר‬‫בו‬‫מאוחסן‬.‫האיבר‬ ‫עמוד‬:356. Int count ( element *list,int num); ‫מקבלת‬‫רשימה‬‫ומספר‬‫וסופרת‬ ,‫כמה‬‫פעמים‬‫מופיע‬‫ערך‬‫מסוים‬‫)המספר‬num‫ברשימה‬ (list. ‫עמוד‬:387)10.6) Void delete_list (element *&list); ‫מקבלת‬‫רשימה‬list‫ומוחקת‬‫את‬‫כל‬‫איברה‬‫מהזיכרון‬‫)המצביע‬‫לראשה‬‫יהיה‬‫בסיום‬‫הפונקציה‬‫בעל‬ ‫ערך‬NULL, ‫עמוד‬:387)10.7.( Void append (element *&a , element *&b); ‫מקבלת‬‫שתי‬‫רשימות‬a-‫ו‬b‫ומצרפת‬ ,‫את‬‫הרשימה‬b‫לסופה‬‫של‬‫הרשימה‬a‫)ערכו‬‫של‬‫המצביע‬ ‫על‬‫ראש‬b‫צריך‬‫להיות‬‫בסיום‬‫הפונקציה‬NULL. ‫עמוד‬:387)10.8( ‫ממוינת‬ ‫רשימה‬ Void merge_sort (element *&list) ‫מיון‬‫מיזוג‬‫של‬‫רשימה‬‫מקושרת‬‫משתמשת‬ )‫בפונקציה‬second_front_back_split‫המקבלת‬ ‫רשימה‬‫ומחזירה‬‫שתי‬‫רשימות‬.‫ממוינות‬ ‫כמו‬‫כן‬‫משתמשת‬‫הפונקציה‬-‫ב‬rec_dorted_list ‫עמוד‬:364. Void seond_front_back_split (element *source,element *&front, element *&back;( ‫מקבלת‬‫רשימה‬‫ומפצלת‬‫אותה‬.‫לשניים‬ ‫עמוד‬361. 17
  • 18. Element *rec_sorted_merge (element *a,element *b); ‫ממזגת‬‫בין‬‫שני‬‫רשימות‬.‫ממוינות‬ ‫עמוד‬:363. Void *read_sort (); ‫מקבלת‬‫רשימה‬‫ריקה‬‫ומכניסה‬‫את‬‫המספר‬‫כל‬‫פעם‬‫בצורה‬‫היא‬ .‫ממוינית‬‫קוראת‬‫לפונקציה‬ search‫בכדי‬‫להכניס‬‫כל‬‫איבר‬‫למקומו‬‫הנכון‬‫בכדי‬‫שהרשימה‬‫תישאר‬.‫ממויינת‬ ‫עמוד‬:362. Element *search (element *list , int num); ‫מקבלת‬‫רשימה‬‫ומספר‬‫ומחפשת‬‫את‬‫המקום‬‫המתאים‬‫ומחזירה‬ ,‫להכניסו‬pointer‫לרשימה‬ .‫הממוינת‬ ‫עמוד‬:362–363. Void remove_duplicates (element *&list); ‫מקבלת‬‫רשימה‬‫ממוינת‬‫ומוחקת‬‫את‬‫כל‬‫המופעים‬‫הכפולים‬‫של‬‫יש‬ .‫האיבר‬‫לסרוק‬‫את‬‫הרשימה‬ ‫פעם‬‫אחת‬.‫בלבד‬ ‫עמוד‬:388)10.9.( ‫מקושרת‬ ‫רשימה‬ ‫על‬ ‫ריצה‬ ‫זמני‬ ‫של‬ ‫סיבוכיות‬ ‫עמוד‬:364–365. ‫דו-סטרית‬ ‫רשימה‬ Void add_to_double (int new_num, element *&list,element *this_el); ‫מכניסה‬‫לרשימה‬‫דו‬‫סיטרית‬list‫איבר‬‫חדש‬‫עם‬‫המספר‬new_num‫לאחר‬‫האיבר‬‫המוצבע‬‫על‬ ‫ידי‬this_el ‫עמוד‬:366–367 Void remove_from_double (element *&list , int position); ‫מקבלת‬‫רשומה‬‫דו-סיטרית‬list‫ומספר‬і (( position‫ומוחקת‬‫את‬‫האיבר‬‫במיקום‬-‫ה‬і ‫מהרשימה‬list. ‫עמוד‬:388–389. 18
  • 19. Void print_in_reverse (element *list) ‫מקבלת‬‫רשימה‬‫דו-סיטרית‬list‫ומדפיסה‬‫את‬‫אבירה‬‫מהסוף‬.‫להתחלה‬ ‫עמוד‬:389. 19
  • 20. ‫בינארים‬ ‫עצים‬ Void init_empty (node *&root); ‫מאתחלת‬‫עץ‬.‫ריק‬ ‫עמוד‬:374. Void init_node (node *&root,int num); ‫מאתחלת‬‫עץ‬‫עם‬‫צומת‬.‫אחד‬ ‫עמוד‬374. Void build (node *&root, node *left, node *right, int num); ‫מקבלת‬‫תת‬‫עץ‬‫תת‬ ,‫שמאלי‬‫עץ‬‫ימני‬‫ומספר‬‫ובונה‬‫מהם‬‫עץ‬‫בינארי‬‫שבשורשו‬.‫המספר‬ ‫עמוד‬:374. Node *left (node *root); ‫מחזירה‬‫מצביע‬‫לתת‬‫עץ‬.‫השמאלי‬ ‫עמוד‬:374. Node *right (node *root); ‫מחזירה‬‫מצביע‬‫לתת‬‫עץ‬.‫ימני‬ ‫עמוד‬:374. Void add_lson (node *root,node *new_tree); ‫מוסיף‬‫את‬‫המצביע‬‫כבן‬‫שמאלי‬‫)עמוד‬ .‫לשורש‬375.( Void add_rson (node *root,node *new_tree); ‫מוסיף‬‫את‬‫המצביע‬‫כבן‬‫ימני‬‫)עמוד‬ .‫לשורש‬375.( Void delete_lson (node *root); ‫מוחק‬‫את‬‫הבן‬‫השמאלי‬‫של‬‫הצומת‬ ‫עמוד‬:375. Void delete_rson (node *root); ‫מוחק‬‫את‬‫הבן‬‫ימני‬‫של‬‫הצומת‬ ‫עמוד‬:375. Int retrieve_root ( node *root); ‫מחזיר‬‫את‬‫הערך‬‫המאוחסן‬.‫בשורש‬ ‫עמוד‬:375. Void modify_root (node *root , int new_num); ‫משנה‬‫את‬‫הערך‬‫המאוחסן‬‫בשורש‬ ‫עמוד‬:376. 20
  • 21. Int empty_tree (node *root); ‫מחזיר‬‫ערך‬1‫עם‬‫העץ‬‫ו‬ ,‫ריק‬0.‫אחרת‬ ‫עמוד‬:376. Int no_of_nodes (node *root); ‫מונה‬‫את‬‫מספר‬‫הצמתים‬.‫בעץ‬ ‫עמוד‬:376. Int no_of_leaves (node *root); ‫מונה‬‫את‬‫מספר‬‫העלים‬.‫בעץ‬ ‫עמוד‬:376. Int is_leaf (node *T); ‫מקבל‬‫צומת‬‫ומחזיר‬‫תשובה‬‫אם‬‫הוא‬‫עלה‬ ‫עמוד‬:377. Int is_in_tree (node *T,int a); ‫מקבל‬‫מספר‬‫ועץ‬‫)לא‬‫ומחזיר‬ (‫ממויין‬‫תשובה‬‫אם‬‫המספר‬‫נמצא‬.‫בעץ‬ ‫עמוד‬:377. Int descendant (node *T,int x, int y); ‫מקבל‬‫מצביע‬‫לעץ‬T‫ושני‬‫מספרים‬x-‫ו‬y‫ובודקת‬ ,‫האם‬‫קיימם‬‫שני‬‫צמתים‬‫בעץ‬T‫המכילים‬ ‫את‬x-‫ו‬y‫כך‬ ,-‫ש‬y‫הוא‬‫צאצא‬‫של‬–x. ‫עמוד‬:390)10.18/( Int min ( int a ,int b, int c); ‫מקבלת‬‫עץ‬T‫ומחזירה‬‫את‬‫האיבר‬‫הקטן‬‫ביותר‬.‫בעץ‬ :‫עמוד‬390)10.19( Int max (( int a ,int b,); ‫מקבלת‬‫עץ‬T‫ומחזירה‬‫את‬.‫גובההו‬ ‫עמוד‬:391)10.20.( ‫בינארים‬ ‫עצים‬ ‫סריקת‬ ‫הדפסת‬‫תכולת‬‫העץ‬‫בשלושה‬‫צורות‬. 21
  • 22. ‫סריקת‬pre order: void print_pre (node *root); ‫עמוד‬:379. ‫סריקת‬in order: void print_in (node *root); ‫עמוד‬:380. ‫סריקת‬post order: void print_post (node *root); ‫עמוד‬:380. ‫ממוינים‬ ‫עצים‬ Node *build_sorted_tree ( ) ; ‫בונה‬‫עץ‬‫בינארי‬‫ממויין‬‫מרשימת‬‫מספרים‬‫הערך‬ ,‫בקלט‬‫הראשון‬‫יאוחסן‬‫בשורש‬.‫העץ‬ ‫היא‬‫משתמשת‬‫בפונקציה‬init_empty ( t‫לאיתחול‬ (‫עץ‬‫ריק‬‫ולפונקציה‬add_to_sorted ‫שתכניס‬‫את‬‫המספר‬‫למקומו‬‫בעץ‬.‫הממויין‬ ‫עמוד‬:382. Void add_to_sorted ( node *&root, int num); ‫תכניס‬‫את‬‫המספר‬‫למקומו‬‫בעץ‬‫הממויין‬. ‫עמוד‬:382. Node *search_sorted (node *root, int x); ‫חיפוש‬‫ערך‬‫בעץ‬.‫ממויין‬ ‫עמוד‬:381. 22