תאריך הגשה: 2 בינואר 2006.

שאלה 1

כתבו פונקציה רקורסיבית לחישוב המקדם הבינומי :
int binomial(int n,int k);
השתמשו בנוסחת הנסיגה:

יש לשלב את הפונקציה בתוכנית המייצרת 10 זוגות אקראיים של מספרים (k,n) המקיימים  ומדפיסה עבורם את .

שאלה 2

כתבו שלוש פונקציות לחישוב :
int dlog(int a,int b);
int dlog_iter(int a,int b);
double dlog_exact(int a,int b);

הפונקציה dlog היא פונקציה רקורסיבית המחשבת עבור השלמים a ו-b את הערך התחתון של  ( כלומר את  ).
הפונקציה dlog_iter מחשבת גם כן את , אך אינה רקורסיבית.
הפונקציה dlog_exact מחשבת את הערך הממשי המדוייק של .

יש לשלב את הפונקציות בתוכנית ראשית המייצרת 100 זוגות אקראיים של מספרים (a,b) בתחום  ומדפיסה עבורם את הערך המתקבל מהפעלת כל אחת משלוש הפונקציות.

הערות:

א.	במידה והקלט לא תקין (  או  ), הפונקציות לעיל תחזרנה -1.
ב.	במימוש dlog ו-dlog_iter אין להשתמש בפונקציות ספריה.

שאלה 3

כתבו שתי פונקציות הפועלות על מחרוזות כדלהלן:
int my_strcmp(char s[],char t[]);
int my_strstr(char s[],char t[]);

הפונקציה my_strcmp מחזירה -1 אם המחרוזת s קטנה לקסיקוגרפית מהמחרוזת t, 0 אם הן שוות ו-1 אם s גדולה לקסיקוגרפית מ-t.
הפונקציה my_strstr תחזיר 1 במידה והמחרוזת t מופיעה כתת מחרוזת ב-s. אחרת, הפונקציה תחזיר 0.

דוגמאות:

my_strcmp(“abc”,”abd”) תחזיר -1
my_strcmp(“abc”,”abcd”) תחזיר -1
my_strcmp(“Abc”,”ABC”) תחזיר 1
my_strstr(“abcxyz”,”cxy”) תחזיר 1
my_strstr(“abcxyz”,”cxyy”) תחזיר 0

יש לשלב את הפונקציות בתוכנית ראשית הקוראת שתי מחרוזות ומדפיסה את תוצאות הרצתן של שתי הפונקציות.

הערה: במימוש my_strcmp ו-my_strstr אין להשתמש בפונקציות ספריה.

שאלה 4

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

double string_to_real(char s[]);

לדוגמה, string_to_real(“123.45”) תחזיר 123.45

הערה: במימוש string_to_real אין להשתמש בפונקציות ספריה.

השתמשו בפונקציה זו כדי לכתוב תוכנית כדלהלן:

קלט: שני מספרים ממשיים lower ו-upper ומחרוזת s המכילה מספרים ממשיים מופרדים בפסיקים.
פלט: התוכנית תפענח את כל המספרים הממשיים המופיעים במחרוזת.
לכל מספר x המופיע במחרוזת ונמצא בתחום   יודפסו  ו-.
לכל מספר x המופיע במחרוזת ואינו בתחום הנ"ל יודפסו  ו-.

דוגמה:

קלט:
10.6
19.73
16.81,20.5,18.9225,5.6

פלט: 
Lower bound = 10.600000
Upper bound = 19.730000
Series: 16.81,20.5,18.9225,5.6
16.810000 4.100000 282.576100
20.500000 3.020425 1.311754
18.922500 4.350000 358.061006
5.600000 1.722767 0.748188

  

בהצלחה !!!