Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬

‫תרגיל בית מספר ‪ -5‬עמוד ‪ 1‬מתוך ‪5‬‬

‫מבוא למדעי המחשב – ‪150005‬‬


‫תרגיל בית מספר ‪5‬‬
‫פונקציות‬
‫הנחיה חשובה‪ :‬בראש כל תרגיל רשום נושא התרגיל‪ .‬בפתרון השאלות בדף זה יש להשתמש בכל‬
‫החומר שנלמד עד נושא הדף ‪ -‬פונקציות‪ .‬אין להשתמש בכלים ויכולות שנלמדו לאחר נושא זה‪.‬‬
‫בהצלחה!‬

‫שאלה מס' ‪:1‬‬

‫הגדירו פונקציה בשם ‪ area‬המקבלת כפרמטרים שני מספרים שלמים חיוביים המייצגים‬ ‫א‪.‬‬
‫אורך ורוחב של מלבן‪ .‬על הפונקציה לחשב ולהחזיר את שטח המלבן‪.‬‬

‫הגדירו פונקציה נוספת בשם ‪( area‬שם זהה לפונקציה הקודמת) המקבלת כפרמטרים‬ ‫ב‪.‬‬
‫מספר שלם וחיובי המייצג רדיוס של מעגל‪ .‬על הפונקציה לחשב ולהחזיר את שטח המעגל‪.‬‬
‫הגדירו את המשתנה ‪ PI‬כקבוע השווה לערך ‪3.14159‬‬

‫ִּכתבו תכנית ראשית הקולטת שני מספרים שלמים חיוביים (עבור אורך ורוחב של מלבן)‪ ,‬לאחר‬
‫ההודעה הבאה‪:‬‬
‫‪Enter length and width of the rectangle:‬‬
‫על התכנית להדפיס את שטח המלבן ע"י זימון (קריאה) הפונקציה המוגדרת בסעיף א'‪.‬‬
‫לאחר מכן‪ ,‬על התכנית לקלוט מספר שלם וחיובי (עבור רדיוס מעגל)‪ ,‬ע"י ההודעה הבאה‪:‬‬
‫‪Enter radius of the circle:‬‬
‫על התכנית להדפיס את שטח המעגל ע"י זימון הפונקציה המוגדרת בסעיף ב'‪.‬‬
‫דוגמאות להרצת התכנית‪:‬‬
‫‪Enter length and width of the‬‬ ‫‪Enter length and width of the‬‬
‫‪:rectangle‬‬ ‫‪:rectangle‬‬
‫‪42‬‬ ‫‪1‬‬
‫‪8‬‬ ‫‪-3‬‬
‫‪:Enter radius of the circle‬‬ ‫‪ERROR‬‬
‫‪1‬‬ ‫‪2‬‬
‫‪3.14159‬‬ ‫‪2‬‬
‫‪4‬‬
‫‪:Enter radius of the circle‬‬
‫‪-4‬‬
‫‪ERROR‬‬
‫‪3‬‬
‫‪28.2743‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ -5‬עמוד ‪ 2‬מתוך ‪5‬‬

‫שאלה מס' ‪:2‬‬

‫הגדרה‪ :‬מספר מושלם הוא מספר השווה לסכום כל מחלקיו הקטנים ממנו‪.‬‬
‫לדוגמא‪ :‬המספר ‪ 6‬הינו מספר מושלם‪ ,‬מאחר ומחלקיו הקטנים ממנו הם המספרים ‪ 1,2,3‬וסכומם‬
‫הוא‪.6=1+2+3 :‬‬
‫הגדירו פונקציה בשם ‪ perfect‬המקבלת כפרמטר מספר שלם וחיובי‪ .‬על הפונקציה לבדוק‬ ‫א‪.‬‬
‫ולהחזיר ‪ true‬במידה והמספר הוא מושלם‪ ,‬אחרת על הפונקציה להחזיר ‪.false‬‬

‫הגדירו פונקציה בשם ‪ printPerfects‬המקבלת כפרמטר מספר שלם וחיובי‪ .‬על הפונקציה‬ ‫ב‪.‬‬
‫להדפיס את כל המספרים המושלמים הקטנים ממספר זה‪ ,‬באמצעות זימון הפונקציה‬
‫‪ perfect‬המוגדרת בסעיף א' (ההדפסה תתקבל עם רווחים בין המספרים)‪ .‬במידה ולא‬
‫התקבל מספר כפרמטר בפונקציה‪ ,‬על הפוקציה להדפיס את כל המספרים המושלמים‬
‫הקטנים מ‪.500 -‬‬
‫ִּכתבו תכנית ראשית הקולטת מספר שלם וחיובי‪ ,‬לאחר ההודעה הבאה‪:‬‬
‫‪Enter a number:‬‬
‫על התכנית לחשב ולהדפיס את‪:‬‬
‫רשימת המספרים המושלמים הקטנים מהמספר שהתקבל‪.‬‬ ‫‪‬‬
‫רשימת המספרים המושלמים הקטנים מ‪.500-‬‬ ‫‪‬‬

‫החישוב וההדפסה יתבצעו ע"י זימון הפונקציה ‪ printPerfects‬המוגדרת בסעיף ב'‪ .‬פעם אחת עם‬
‫שליחת פרמטר ופעם נוספת ללא שליחת פרמטר‪.‬‬
‫שימו לב‪ ,‬במידה ולא קיימים מספרים מושלמים הקטנים מהמספר שהתקבל יש להדפיס שורה ריקה‪.‬‬

‫דוגמאות להרצת התכנית‪:‬‬


‫‪Enter a number:‬‬ ‫‪Enter a number:‬‬ ‫‪Enter a number:‬‬
‫‪445‬‬ ‫‪3‬‬ ‫‪-50‬‬
‫‪6 28‬‬ ‫‪ERROR‬‬
‫‪6 28 496‬‬ ‫‪6 28 496‬‬ ‫‪-3‬‬
‫‪ERROR‬‬
‫‪7‬‬
‫‪6‬‬
‫‪6 28 496‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ -5‬עמוד ‪ 3‬מתוך ‪5‬‬

‫שאלה מס' ‪:3‬‬

‫שימו לב‪ :‬בשאלה זו מובא האלגוריתם לחישוב ספרת הביקורת (הִס פרה הימנית‪ ,‬התשיעית) של‬
‫מספר זהות עפ"י שמונה הספרות הראשונות של מספר הזהות‪.‬‬

‫הגדירו פונקציה בשם ‪ sumDigits‬המקבלת כפרמטר מספר שלם וחיובי‪ ,‬על הפונקציה לחשב‬ ‫א‪.‬‬
‫ולהחזיר את סכום ספרותיו‪.‬‬
‫הגדירו פונקציה בשם ‪ lastDigitID‬המקבלת מספר בעל שמונה ספרות (המהוות את שמונה‬ ‫ב‪.‬‬
‫הספרות הראשונות של מספר זהות)‪ ,‬על הפונקציה לחשב ולהחזיר את ספרת הביקורת של‬
‫מספר הזהות (הספרה האחרונה)‪ .‬על הפונקציה לזמן את הפונקציה ‪ sumDigits‬המוגדרת‬
‫בסעיף א'‪.‬‬

‫ספרת הביקורת תחושב באופן הבא‪:‬‬


‫יש להפריד את שמונה הספרות של מספר הזהות‪.‬‬ ‫‪‬‬
‫את כל אחת מהספרות יש להכפיל במשקל שלה‪ .‬כאשר‪:‬‬ ‫‪‬‬
‫‪ -‬ספרות הממוקמות במקומות אי‪-‬זוגיים (משמאל לימין) במספר‪ -‬משקלן שווה ל‪.1-‬‬
‫‪ -‬ספרות הממוקמות במקומות הזוגיים (משמאל לימין) במספר‪ -‬משקלן שווה ל‪.2-‬‬
‫עבור כל תוצאת כפל יש לחשב את סכום ספרות התוצאה‪.‬‬ ‫‪‬‬
‫יש לסכום את כל התוצאות (הסכומים)‪.‬‬ ‫‪‬‬
‫יש להפריד את ספרת האחדות של התוצאה שהתקבלה בסעיף קודם‪.‬‬ ‫‪‬‬
‫יש להחסיר את ספרת האחדות מהמספר ‪ – 10‬התוצאה מהווה את ספרת‬ ‫‪‬‬
‫הביקורת של מספר הזהות‬

‫דוגמא‪ :‬עבור מספר הזהות (שמונה הספרות הראשונות) ‪12345678‬‬


‫(הטבלה להמחשת האלגוריתם בלבד‪ ,‬אין צורך בטבלה!)‪.‬‬

‫שמונה הספרות של מספר הזהות‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬
‫משקל הספרות‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪2‬‬
‫מכפלת הספרה במשקלה‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪8‬‬ ‫‪5‬‬ ‫‪12‬‬ ‫‪7‬‬ ‫‪16‬‬
‫סכום ספרות תוצאת המכפלה‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪8‬‬ ‫‪5‬‬ ‫‪3‬‬ ‫‪7‬‬ ‫‪7‬‬

‫סכום התוצאות (הסכומים של המכפלות)‪38=1+4+3+8+5+3+7+7 :‬‬


‫ספרת האחדות של התוצאה‪8 :‬‬
‫ההפרש בין ‪ 10‬לספרת האחדות‪2=10-8 :‬‬
‫ולכן‪ ,‬קיבלנו כי ספרת הביקורת היא ‪.2‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ -5‬עמוד ‪ 4‬מתוך ‪5‬‬

‫ִּכְת בו תכנית ראשית הקולטת מספר בעל שמונה ספרות (המהוות את שמונה הספרות הראשונות של‬
‫מספר זהות)‪ ,‬לאחר ההודעה הבאה‪:‬‬

‫‪Enter your ID:‬‬


‫על התכנית לחשב את ספרת הביקורת של מספר הזהות‪ ,‬ע"י קריאה לפונקציה המוגדרות בסעיף ב'‪.‬‬
‫ולהדפיס את מספר הזהות השלם (כולל את תשע הספרות) בפורמט הבא‪:‬‬

‫‪Your full ID is:‬‬


‫‪#########‬‬
‫(כמובן בייצוג ‪ #‬יופיעו ספרות מספר הזהות)‪.‬‬

‫דוגמא להרצת התכנית‪:‬‬


‫‪Enter your ID:‬‬
‫‪12345678‬‬
‫‪Your full ID is:‬‬
‫‪123456782‬‬

‫שאלה מס' ‪:4‬‬

‫הגדרה‪ :‬טבלת גיבוב זו טבלה אשר בה מאוכסנים נתונים כלשהם במחשב‪ .‬גודל טבלת הגיבוב חייב‬
‫להיות מספר ראשוני (מספר המתחלק ב‪ 1-‬ובעצמו בלבד)‪.‬‬

‫הגדירו פונקציה בשם ‪ isPrime‬המקבלת כפרמטר מספר שלם וחיובי‪ .‬על הפונקציה‬ ‫א‪.‬‬
‫לבדוק ולהחזיר ‪ true‬במידה והמספר ראשוני‪ ,‬אחרת על הפונקציה להחזיר ‪.false‬‬

‫הגדירו פונקציה בשם ‪ findPrime‬המקבלת כפרמטר מספר שלם וחיובי‪ .‬על הפונקציה‬ ‫ב‪.‬‬
‫לחשב ולהחזיר את המספר הראשוני הקרוב ביותר (שווה או גדול) למספר שהתקבל‬
‫כפרמטר‪ .‬על הפונקציה לזמן את הפונקציה ‪ isPrime‬המוגדרת בסעיף א'‪.‬‬

‫ִּכְת בו תכנית ראשית הקולטת מספר שלם‪ ,‬לאחר ההודעה הבאה‪:‬‬


‫‪Enter number of values:‬‬
‫על התכנית לחשב את גודל טבלת הגיבוב באופן הבא‪:‬‬

‫במידה והמשתמש יודע מהו מספר הנתונים שעליו לשמור בטבלת הגיבוב‪ ,‬עליו להכניס‬ ‫‪‬‬
‫מספר חיובי‪ .‬כלומר‪ ,‬התכנית תקלוט מספר חיובי ותחשב את גודל הטבלה כמספר הראשוני‬
‫הקרוב ביותר (שווה או גדול) למספר הנקלט‪.‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ -5‬עמוד ‪ 5‬מתוך ‪5‬‬

‫במידה והמשתמש לא יודע מהו מספר הנתונים שעליו לשמור בטבלת הגיבוב‪ ,‬עליו להכניס‬ ‫‪‬‬
‫מספר שלילי או ‪ .0‬במקרה זה על התכנית לחשב את גודל הטבלה ע"י שימוש במספרים‬
‫אקראיים עפ"י השלבים הבאים‪:‬‬
‫על התכנית להגריל מספר אקראי בין ‪ 10‬ל‪( 100-‬כולל)‪.‬‬ ‫‪‬‬
‫על התכנית לחשב את גודל הטבלה כמספר הראשוני הקרוב ביותר (שווה או גדול)‬ ‫‪‬‬
‫למספר שהוגרל‪.‬‬

‫בכל אחד מהמקרים‪ ,‬חישוב גודל הטבלה יעשה ע"י זימון הפונקציה ‪ findPrime‬המוגדרת‬
‫בסעיף ב'‪.‬‬

‫על התכנית להדפיס את גודל טבלת הגיבוב בפורמט הבא‪:‬‬

‫‪Table size:#‬‬

‫בייצוג ‪ #‬יופיע גודל הטבלה שהתכנית חישבה‪.‬‬

‫דוגמאות להרצת התכנית‪:‬‬

‫‪Enter number of values:‬‬ ‫‪Enter number of values:‬‬ ‫‪Enter number of values:‬‬


‫‪11‬‬ ‫‪25‬‬ ‫‪-1‬‬
‫‪Table size: 11‬‬ ‫‪Table size: 29‬‬ ‫‪Table size: 19‬‬

‫שימו לב‪:‬‬
‫בכדי שהבודק האוטומטי יזהה את פקודת ‪ )(rand‬יש להוסיף בתחילת התכנית את הפקודה‬
‫הבאה‪:‬‬
‫‪>include <cstdlib#‬‬

‫!!בהצלחה רבה‬

You might also like