You are on page 1of 5

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

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

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


‫תרגיל בית מספר ‪3‬‬
‫ביטויים ואופרטורים לוגיים‪ if, switch ,‬ו‪enum -‬‬
‫הערות‪:‬‬
‫הקפידו לבצע בדיוק את הנדרש בכל שאלה‪.‬‬ ‫א‪.‬‬
‫בכל מקרה של קלט לא תקין או שגיאה יש לתת הודעת ‪ERROR‬‬ ‫ב‪.‬‬
‫לפני הגשת תרגיל – אנא בידקו כי עמדתם בכל הדרישות‪.‬‬ ‫ג‪.‬‬
‫תיעוד – בכל קובץ חייב להופיע תיעוד על פי הפירוט הבא‪:‬‬
‫‪ -‬שורה ‪ :1‬שם המחבר ות‪.‬ז‪.‬‬
‫‪ -‬שורה ‪ :2‬שם הקורס‪.‬‬
‫‪ -‬שורה ‪ :3‬מס' תרגיל ומס' שאלה‪.‬‬
‫‪ -‬שורה ‪ :4‬תיאור קצר באנגלית לגבי מה התוכנית מבצעת‪.‬‬
‫‪ -‬בסוף כל תכנית דוגמת הרצה המראה את נכונות הקוד‪.‬‬
‫‪ -‬במבני בקרה (תנאים)‪.‬‬
‫‪ -‬בכל קטע קוד מעט מורכב המצריך תיעוד קצר להבנה‬
‫שמות משמעותיים עבור משתנים‪ ,‬פונקציות‪ ,‬קבועים‪ enum ,‬וכדו'‬
‫עיצוב התכנית‪ -‬בדיקת הזחות‪ ,‬שורות ריקות (בין חלקים לוגיים של התכנית)‪.‬‬
‫קריאות הקוד ולוגיקה ישירה‪.‬‬
‫שימוש נכון בקבועים‪.‬‬

‫שימו לב‪:‬‬

‫זהו התרגיל השני אשר אתם מגישים לבודק האוטומטי‪.‬‬


‫עליכם לקרוא את ההוראות בכל שאלה ולפעול על פיהן בצורה מדויקת!!‬
‫יש להקפיד מאוד בכתיבת התכניות על פלטים מדויקים כפי שמופיעים בדוגמאות ההרצה‪ .‬כגון‪:‬‬
‫אותיות גדולות ‪ /‬וקטנות‪ ,‬סימני פיסוק וכדו'‪...‬‬
‫לצורך הבהרה‪ ,‬לכל שאלה מובאת דוגמת הרצה‪ ,‬ובה‪ :‬פלט של התכנית נצבע בירוק וקלט של‬
‫התכנית מהמשתמש נצבע בצהוב‪.‬‬

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

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

‫‪enter a number:‬‬

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

‫במידה וכל הספרות המרכיבות את המספר הן אי זוגיות‪ ,‬על התכנית להדפיס את ההודעה‬ ‫‪‬‬
‫‪ odd digits only‬ואת סכום הספרות המרכיבות אותו‪.‬‬
‫במידה וכל הספרות המרכיבות את המספר הן זוגיות‪ ,‬על התכנית להדפיס את ההודעה‬ ‫‪‬‬
‫‪ even digits only‬ואת מכפלת הספרת המרכיבות אותו‪.‬‬
‫במידה והמספר מורכב הן מספרות זוגיות והן מספרות אי זוגיות‪ ,‬על התכנית להדפיס את‬ ‫‪‬‬
‫ההודעה ‪.mixed number‬‬
‫במידה והתקבל קלט לא חוקי (מספר גדול שווה ל‪ 100-‬או קטן מ‪ – )10-‬על התכנית להדפיס‬ ‫‪‬‬
‫את ההודעה ‪ ERROR‬ולסיים‪.‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ - 3‬עמוד ‪ 2‬מתוך ‪5‬‬

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

‫‪enter a number:‬‬ ‫‪enter a number:‬‬ ‫‪enter a number:‬‬


‫‪16‬‬ ‫‪28‬‬ ‫‪19‬‬
‫‪mixed number‬‬ ‫‪even digits only‬‬ ‫‪odd digits only‬‬
‫‪16‬‬ ‫‪10‬‬

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

‫כיתבו תכנית הקולטת שלושה מספרים למשתנים ‪ first, last‬ו‪ ,number-‬ע"י ההודעה הבאה‪:‬‬

‫‪enter 3 numbers:‬‬

‫על התכנית לבדוק האם ‪ number‬בתחום המספרים בין ‪ first‬ל‪ ,last -‬ולהדפיס הודעה מתאימה עפ"י‬
‫הפירוט הבא‪:‬‬

‫במידה ו‪ number -‬נמצא בתוך התחום (כולל קצות התחום)‪ ,‬על התכנית להדפיס את‬ ‫‪‬‬
‫ההודעה ‪.between‬‬

‫במידה ו‪ number-‬קטן מהתחום‪ ,‬על התכנית להדפיס את ההודעה ‪.smaller‬‬ ‫‪‬‬

‫במידה ו‪ number-‬גדול מהתחום‪ ,‬על התכנית להדפיס את ההודעה ‪.bigger‬‬ ‫‪‬‬

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


‫‪‬‬
‫‪enter 3 numbers:‬‬ ‫‪enter 3 numbers:‬‬ ‫‪enter 3 numbers:‬‬ ‫‪‬‬
‫‪3 9 11‬‬ ‫‪391‬‬ ‫‪397‬‬
‫‪smaller‬‬ ‫‪‬‬
‫‪bigger‬‬ ‫‪between‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ - 3‬עמוד ‪ 3‬מתוך ‪5‬‬

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

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

‫‪enter 2 numbers:‬‬

‫לאחר מכן התכנית קולטת פעולה חשבונית (כ‪-‬תו ‪ )char‬חיבור‪/‬חיסור‪/‬כפל‪/‬חילוק‪ ,‬ע"י ההודעה הבאה‪:‬‬

‫‪enter an operator:‬‬

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

‫שימו לב‪ :‬במידה ולא התקבל תו המהווה אחד מהאופרטורים חיבור‪/‬חיסור‪/‬כפל‪/‬חילוק‪ ,‬יש להציג את‬
‫ההודעה ‪ ERROR‬ולסיים‪.‬‬

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

‫‪enter 2 numbers:‬‬ ‫‪enter 2 numbers:‬‬ ‫‪enter 2 numbers:‬‬ ‫‪enter 2 numbers:‬‬


‫‪10 4‬‬ ‫‪10 2‬‬ ‫‪10 2‬‬ ‫‪10 2‬‬
‫‪enter an operator:‬‬ ‫‪enter an operator:‬‬ ‫‪enter an operator:‬‬ ‫‪enter an operator:‬‬
‫‪/‬‬ ‫*‬ ‫‪+‬‬ ‫–‬
‫‪10 / 4 = 2.5‬‬ ‫‪10 * 2 = 20‬‬ ‫‪10 + 2 = 12‬‬ ‫‪10 – 2 = 8‬‬

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

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

‫‪enter 3 numbers:‬‬

‫על התכנית לבדוק האם ניתן ליצור מהם משולש‪ .‬על התכנית להדפיס הודעה מתאימה עפ"י הפירוט‬
‫הבא‪:‬‬
‫עבור צלעות המהוות משולש שווה צלעות – ‪.equilateral triangle‬‬ ‫‪‬‬
‫עבור צלעות המהוות משולש שווה שוקיים ‪.isosceles triangle -‬‬ ‫‪‬‬
‫עבור צלעות המהוות משולש שונה צלעות ‪.scalene triangle -‬‬ ‫‪‬‬
‫עבור צלעות שלא יכולות להרכיב משולש ‪.cannot form a triangle -‬‬ ‫‪‬‬

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

‫‪enter 3 numbers:‬‬ ‫‪enter 3 numbers:‬‬ ‫‪enter 3 numbers:‬‬ ‫‪enter 3 numbers:‬‬


‫‪571‬‬ ‫‪345‬‬ ‫‪575‬‬ ‫‪555‬‬
‫‪cannot form a triangle‬‬ ‫‪scalene triangle‬‬ ‫‪isosceles triangle‬‬ ‫‪equilateral triangle‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ - 3‬עמוד ‪ 4‬מתוך ‪5‬‬

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

‫להלן תכנית הקולטת שלושה מספרים למשתנים ‪.num1, num2, num3‬‬


‫עליך להשלים את התכנית כך ש‪-‬‬
‫המספר הגדול ביותר יישמר במשתנה ‪.biggest‬‬ ‫‪‬‬
‫המספר השני בגודלו יישמר במשתנה ‪.middle‬‬ ‫‪‬‬
‫המספר הקטן ביותר יישמר במשתנה ‪.smallest‬‬ ‫‪‬‬
‫על התכנית להדפיס את המספרים שנקלטו בסדר לא יורד‪.‬‬

‫>‪#include <iostream‬‬
‫;‪using namespace std‬‬
‫{ )(‪int main‬‬
‫;‪int num1, num2, num3, smallest, middle, biggest‬‬
‫;‪cout << "enter 3 numbers: " << endl‬‬
‫;‪cin >> num1 >> num2 >> num3‬‬

‫במקום זה עליך לכתוב את הקוד‬


‫בכדי להשלים את התוכנית כנדרש‪.‬‬

‫;‪cout << smallest << " " << middle << " " << biggest << endl‬‬
‫;‪return 0‬‬
‫}‬

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

‫‪enter 3 numbers:‬‬ ‫‪enter 3 numbers:‬‬


‫‪961‬‬ ‫‪294‬‬
‫‪169‬‬ ‫‪2 49‬‬
‫מבוא למדעי המחשב – ‪ – 150005‬תשפ"ג‬ ‫בס"ד‬
‫תרגיל בית מספר ‪ - 3‬עמוד ‪ 5‬מתוך ‪5‬‬

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

‫כתבו תכנית הקולטת מספר בין ‪ 1‬ל‪( 12 -‬כולל)‪ ,‬ע"י ההודעה הבאה‪:‬‬
‫‪enter a number:‬‬
‫על התכנית להדפיס‪ ,‬בעזרת פקודת ‪ ,switch‬את מספר הימים בחודש שהמספר מייצג (בשנה לא‬
‫מעוברת)‪ ,‬ע"י ההודעה הבאה‪:‬‬
‫_??_ ‪days in the month‬‬
‫בתכנית זו עליך להגדיר ‪ enum‬בשם ‪ MONTH‬המכיל את ערכי החודשים השונים בשנה‪:‬‬
‫‪JAN, FEB, MARCH, APRIL, MAY, JUNE, JULY, AUG, SEPT, OCT, NOV, DEC‬‬

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

‫‪enter a number:‬‬ ‫‪enter a number:‬‬


‫‪6‬‬ ‫‪3‬‬
‫‪30 days in the month‬‬ ‫‪31 days in the month‬‬

‫מספר הימים בחודש לועזי בשנה רגילה‪:‬‬

‫ספטמבר ‪30 -‬‬ ‫מאי ‪31 -‬‬ ‫ינואר ‪31 -‬‬


‫אוקטובר ‪31 -‬‬ ‫יוני ‪30 -‬‬ ‫פברואר ‪28 -‬‬
‫נובמבר ‪30 -‬‬ ‫יולי ‪31 -‬‬ ‫מרץ ‪31 -‬‬
‫דצמבר ‪31 -‬‬ ‫אוגוסט ‪31 -‬‬ ‫אפריל ‪30 -‬‬

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

You might also like