בכל מקרה, זה רק תת-תת סעיף מעבודה שואתית ביות
הסעיף כולו:
2. טור הנדסי ) 20 נק'(
סדרה הנדסית היא סדרה של מספרים בה המנה בין כל שני מספרים עוקבים הוא קבוע q. בחלק זה נבקש
מהמשתמש להכניס מספר שלם וחיובי n, התכנית תנסה למצוא סדרה הנדסית עם קבוע חלוקה q שלם וגדול מ 5
שסכומה ייתן את המספר n . על הסדרה לכלול מספרים שלמים הגדולים מאפס ואורכה לפחות שני איברים.
סדרה כזו תימצא בהכרח עבור n הגדול מ 2, כאשר a1=1 ו q=n-1 .
במידה ונמצא יותר מסדרה אחת יודפסו כולן.
סדר ההדפסות יקבע להלן:
.5 סדרות ארוכות יותר יודפסו לפני סדרות קצרות יותר.
.2 סדרות באורך זהה יודפסו לפי סדר עולה של q .
עבור חישובי עזר כתבו את הפונקציות הבאות:
א. כתבו פונקציה:
int power(int x,int y)
המחשבת את x בחזקת y .
ב. כתבו פונקציה:
int lg(int base,int x)
המחשבת את הלוגריתם של x לפי בסיס base מעוגל כלפי מטה.
שימו לב שהפונקציות עובדות על מספרים מטיפוס int ומחזירות טיפוס int . להזכירכם, ביישום הפונקציות אין
להשתמש בפונקציות ספריה אחרות כגון math.h .
ג. כתבו פונקציה:
void print_sum(int a1,int q,int n)
המדפיסה שורה של סכום סדרה הנדסית כאשר נתון האיבר הראשון a1 קבוע החלוקה q ומספר האיברים n .
על הדפסה זו להיות זהה לפורמט שיובא בדוגמא וכפי שיודפס בתוכנית לדוגמא.
ד. כתבו פונקציה:
void geometric()
המקבלת מן המשתמש מספר n>2 ומנסה למצוא את הסדרות הגאומטריות שסכומם הוא המספר.
דוגמאות:
Enter a number:
2
Invalid input. Try again...
31
31 = 1 + 2 + 4 + 8 + 16
31 = 1 + 5 + 25
31 = 1 + 30
Enter a number:
121
121 = 1 + 3 + 9 + 27 + 81
121 = 11 + 110
121 = 1 + 120
רעיון לאלגוריתם יותר יעיל ממלא לולאות שרצות על a1 ו-q
לא בצורה חכמה ויעילה?