נשלח בתאריך: 21 November 2008 בשעה 23:55 | | IP רשוּם
|
|
|
|
יש כמה דרכים לפתור את זה... בהנחה שהגדרות התרגיל אינן מאפשרות שימוש בלולאות בכלל (את כתבת רק for), ומרמיזה של שימוש ב-switch ו- if אני מעריך שהתרגיל נועד לתרגול כתיבת התניות. במקרה הזה אפשר לעשות פשוט בדיקה בין טווחים 0-9, 10-99, 100-999 וכן הלאה... השאלה מתי את עוצרת, כלומר מה הוא הטווח המקסימלי? התשובה לזה תלויה בטיפוס המשתנה שניתן לך.
יש פתרון שהוא האהוב עלי ביותר שעושה שימוש ב-log בסיס 10. נסביר - מס' הספרות משתנה בטווחים לפי מכפלות של עשר, כלומר אם מדובר על מס' X בעל שתי ספרות אז הוא חייב להיות בטווח שבין 10 ל-100 לא כולל 100. כלומר 10 =< X וגם X < 100. מחוקי חזקות גם הלוגריתמים מתנהגים באותה צורה, כלומר log X >= log 10 וגם log X < log 100. אם נשתמש בבסיס 10 נראה כי האי שיוויון שמתקבל הוא: 1 =< log X וגם log X < 2. עכשיו נתבונן היטב ונראה כי התוצאה שמתקבלת משימוש ב - log בבסיס 10 על כל מס' שהוא כפולה של 10 שווה תמיד למס' הספרות שיש בו פחות אחת. מכאן לפי האי שיוויון שקיבלנו מס' הספרות של כל ספרה X תהיה ערך השלם של תוצאת הפעלת ה - log בבסיס 10 עליה + 1.
|