המשך / מבחן
שאלה 7
נתונה כותרת הפונקציה function Smaller (Letter1 , Letter2 : char ) : boolean;
{ טענת כניסה: הפונקציה מקבלת כפרמטרים שתי אותיות }
{ טענת יציאה: הפונקציה מחזירה אמת אם האות הראשונה קטנה מהשניה. }
א. השלם את גוף הפונקציה.
נתונה ההצהרה: type CharArray=array[1..100] of char;
ונתונה כותרת הפונקציה : function Substrin (S:CharArray):integer;
{ טענת כניסה: הפונקציה מקבלת כפרמטר מערך אותיות S בגודל 100 }
{ טענת יציאה: הפונקציה מחזירה את אורך הרצף הארוך ביותר של אותיות המסודרות בסדר עולה ממש . }
לדוגמה: עבור המערך בגודל 10
h |
b |
c |
k |
g |
d |
r |
f |
d |
b |
תחזיר הפונקציה ערך 4 כיוון שאורך הרצף bdfr הוא 4 .
ב. העזר בפונקציה Smaller שבסעיף א' וכתוב את גוף הפונקציהSubstring .
שאלה 8
נתונה הפונקציה הרקורסיבית הבאה:
function Secret (N, A :integer) :integer;
{ שלמים וחיוביים N-ו A : טענת כניסה }
{ _____________________: טענת יציאה }
begin
if N = A then
Secret :=1;
else if N < A then
Secret := 0;
else
Secret := Secret (N-A, A) +1;
end; {Secret}
א. מה תחזיר הפונקציה עבור הזימון Secret ( 6 , 2 )
ב. מה תחזיר הפונקציה עבור הזימון Secret (7, 3 )
ג. השלם את טענת היציאה של הפונקציה.
ד. כתוב פונקציה לא רקורסיבית המבצעת אותה משימה.
פרק שלישי ( 20 נקודות)
ענה על אחת מבין השאלות 9 - 10 (20 נקודות).
שאלה מספר 9
לקראת כניסתה של חברת טלפונים סלולריים חדשה לשוק, ערך משרד התקשורת סקר לבדיקת שביעות רצונם של הלקוחות מהחברה.
הסקר כלל 100 לקוחות מהחברה. כל לקוח קיבל מספר סידורי מ- 1 ועד 100 . לטלפון הסלולרי של כל לקוח הוצמד חיישן שמנה את מספר הפעמים בחודש שהיתה הפרעה בתקשורת.
יש לפתח ולישם אלגוריתם שהקלט שלו הוא 100 זוגות נתונים, זוג אחד עבור כל לקוח כאשר הנתון הראשון בכל זוג הוא מספר ההפרעות בחודש הראשון והנתון השני בכל זוג הוא מספר ההפרעות בחודש השני.
פלט האלגוריתם יכלול שלושה מרכיבים:
א. הודעה האם סה"כ ההפרעות ( של כל הלקוחות ) בחודש השני קטן מסה"כ ההפרעות ( של כל הלקוחות ) בחודש הראשון .
ב. מספרי המנויים שממוצע ההפרעות שלהם גדול מממוצע ההפרעות של החברה בשני החודשים ביחד.
ג. מספר המנוי שמספר ההפרעות שלו בחדש הראשון הוא הקרוב ביותר למספר ההפרעות הממוצע (לכל הלקוחות) בחודש הראשון. הנח שיש רק מנוי אחד כזה.
א. בחר משתנים עיקריים, הגדר את טיפוסיהם ותאר את תפקידיהם.
ב. בצע פירוק של הבעיה לתת-בעיות, כך שכל תת-בעיה תיפתר באמצעות פרוצדורה או פונקציה. ציין את הכותרת של כל פרוצדורה או פונקציה; כלומר; שם הפרוצדורה או הפונקציה, הפרמטרים שלה, וטענות כניסה ויציאה מפורטות.
ג. כתוב תוכנית בשפת פסקל לפתרון הבעיה על פי האלגוריתם שפיתחת ( אין צורך לחזור על טענות הכניסה והיציאה שפרטת בסעיף ב' ).
שאלה מספר 10
על מנת לשפר את האקלים החברתי בקורס "כור היתוך" נקבעה וועדת תרבות. משימתה הראשונה של הוועדה היה לערוך רישום מדויק של כל חבריה. על כן נתבקש כל משתתף למסור את הפרטים הבאים: גילו (במספרים שלמים בין 14 ל - 20), מינו (b/g ) והחודש בו חל יום הולדתו (1 - 12 ).
כעת, הוועדה מבקשת לענות על השאלות הבאות:
א. האם קבוצת הגיל 18 מאוזנת? קבוצת גיל ( כל החברים שבאותו גיל ) נקראת "מאוזנת" אם הפער בין מספרי הבנים והבנות בקבוצה אינו עולה על 5.
ב. באיזה חודש/חודשים חל המספר הקטן ביותר של ימי הולדת?
ג. באיזה חודש/חודשים יש יותר ימי הולדת לבנות מאשר לבנים?
יש לפתח ולישם אלגוריתם שהקלט בו הוא נתונים על 200 חברי הקורס, והפלט שלו הוא הדפסת התשובות לשאלות הועדה.
א. בחר משתנים עיקריים, הגדר את טיפוסיהם ותאר את תפקידיהם.
ב. בצע פירוק של הבעיה לתת-בעיות, כך שכל תת-בעיה תיפתר באמצעות פרוצדורה או פונקציה. ציין את הכותרת של כל פרוצדורה או פונקציה; כלומר; שם הפרוצדורה או הפונקציה, הפרמטרים שלה, וטענות כניסה ויציאה מפורטות.
ג. כתוב תוכנית בשפת פסקל לפתרון הבעיה על פי האלגוריתם שפיתחת ( אין צורך לחזור על טענות הכניסה והיציאה שפרטת בסעיף ב' ).
בהצלחה ! ! !