פורסם 2009 בנובמבר 1416 שנים שלום לכולם. קיבלתי תרגיל להגשה שקצת קשה לי ואני לא מצליח להבין כיצד אני מתחיל לכתוב את הפיתרון.עד כה למדנו התניות ולולאות while ו for . וזה כל מה שמותר לי להשתמש בו על מנת לפתור את התרגיל.להלן התרגיל :1) סדרת פיבונצ'י מוגדרת באופן הבא: האיבר הראשון שווה 1. האיבר השני שווה גם הוא 1. כל איבר נוסף שווה לסכום שני האיברים שלפניו. כלומר, הסדרה מתחילה כך: 34 21 13 8 5 3 2 1 1כתוב תוכנית הקולטת מספר index שלם חיובי מהמשתמש ומציגה את האיבר ה- index בסדרת פיבונצ'י.דוגמה לריצת תכנית:Please enter an index: 8The Fibonacci number at index 8 is: 21 אשמח לכיוון בפיתרון . תודה רבה ויום נעים
פורסם 2009 בנובמבר 1416 שנים תגדיר שני משתנים - אחד שמחזיק את האיבר הנוכחי בסדרה, ואחת שמחזיק את האיבר הבא. כתוב לולאה שבכל איטרציה אתה מקדם את שני המשתנים - בהתחלה הראשון מכיל את המספר הראשון בסדרה והשני מכיל את המספר השני, באיטרציה הבאה המשתנה הראשון מכיל את האיבר השני בסדרה והמשתנה השני מכיל את האיבר השלישי, וכן הלאה.
פורסם 2009 בנובמבר 1416 שנים מחבר וואו זה ממש קשה לי. אני יושב על זה כבר שעות ולא מצליח. זה די חדש לי העניין. הנה מה שניסיתי לכתוב עד עכשיו:void main(){ int i, k, a=1, b=1 ,index; cout<<"please enter an index\n"; cin>>index; for ( i=1 ; i<=index ; i++) a=b; b=a+i;אבל עקבתי אחרי התוכנית וזה לא עושה מה שצריך. ניסיתי לקדם את b באמצעות i אבל גם זה לא מצליח טוב.a ו b הם בהתחלה האיברים הראשון והשני)
פורסם 2009 בנובמבר 1416 שנים קודם כל, כמה דברים:א. כשאתה כותב קוד בפורום, תשתמש בטג קוד (כפתור # ליד הכפתור של הציטוט).ב. אל תשתמש ב-void main, תשתמש ב-int main ושים return 0 בסוף.ג. כשאתה משתמש ב-for/while/if אתה צריך לעטוף את הפקודות בסוגריים מסולסלים {}, אחרת רק השורה הראשונה שאחרי ה-for תהיה חלק מהלולאה.לגבי האלגוריתם שלך - שים לב שבסדרת פיבונאצ'י, המיקום של האיבר בסדרה לא אמור להיכנס לחישוב, אלא רק שני האיברים הקודמים בסדרה.
פורסם 2009 בנובמבר 1416 שנים מחבר אני עדיין לא מבין איך להתחיל את החישוב. להכניס את a ו b לאיבר השלישי שמקבל את הסכום של שניהם? אין לי מושג
פורסם 2009 בנובמבר 1416 שנים נניח ש-a מכיל את האיבר הראשון, ו-b את האיבר השני. אז אתה רוצה שאחרי האיטרציה הראשונה, a יכיל את האיבר השני ו-b יכיל את האיבר השלישי, שהוא a+b.כלומר, תיאורטית תרצה לעשות:a = b;b = (old a) + bכמובן, את הערך הקודם של a תצטרך לשמור במשתנה זמני.
פורסם 2009 בנובמבר 1416 שנים מחבר אחח אין כמו הסיפוק של להריץ תוכנית ולראות שהיא עובדת כמו שעון ממש תודה לך מר שניצל הצלחתי במשימה!
פורסם 2009 בנובמבר 1516 שנים מחבר תרגיל נוסף שאני שובר עליו את הראש : --------- כתוב תוכנית המחשבת את sinx עבור x אותו יש לקלוט מהמשתמש, ע"י חישוב הטור הבא: יש לעצור כשמגיעים לאיבר הקטן בערכו המוחלט מ0.001
פורסם 2009 בנובמבר 1516 שנים תתחיל מלעשות דבר כזה: תכתוב תוכנית שמקבלת את x, ומדפיסה את האיבר הראשון בטור הזה שערכו המוחלט קטן מ-0.0001, ותמשיך משם.
פורסם 2009 בנובמבר 1516 שנים מחבר התחלתי שנה א' ואת הקורס הזה לפני כ 3 שבועות , ולא היה לי רקע בתכנות לפני כן, לכן קצת קשה לי להבין איך אני מחשב את הטור הספציפי הזה.למדתי איך לעשות חזקה ועצרת ע"י שימוש בלולאה כלשהי. אבל דברים כמו לולאה בתוך לולאה ממש מסבכים אותי.אני לא יודע כיצד לגשת למשימה הזאת. ניסיתי להבין לפי הרמז בתגובתך אבל לא הצלחתי.ברשותך אני אשים כאן את הקוד שכתבתי עד כה ( אנחנו משתמשים בvoid main ובספריה של c++ אבל מותר לנו להשתמש רק ב cin ו cout משפת c++ ולא שום דבר אחר. זאת שיטת הלימוד במוסד הזה.#include <iostream>using namespace std;void main(){ double i=0,power_of_x=1, azeret=1; double x=1; cout<<"please enter a value to be computed\n"; cin>>x; do { i=i+1; azeret= (azeret+2)*i; power_of_x = power_of_x*x; } while (i<something); }
פורסם 2009 בנובמבר 1516 שנים אז ככה, כמה הערות:א. בחישוב של העצרת יש לך טעות - למה אתה מוסיף 2 לעצרת?ב. שים לב שאתה צריך רק את החזקות האי-זוגיות של x, כלומר בכל איטרציה אתה צריך לכפול ב-x פעמיים (ואותו דבר לגבי העצרת).ג. תנאי העצירה שלך לא אמור להיות תלוי ב-i, אלא באיבר הנוכחי.אחרי שתתקן את הטעויות האלה יהיה אפשר להמשיך הלאה כדי לחשב את הסכום של הטור.לגבי ה-void main וה-cin/cout - זו פשוט טעות. אני לא יודע באיזה מוסד אתה לומד, אבל זה אומר משהו רע מאוד עליו.התקן של C אוסר על השימוש ב-void main, ומחייב שימוש ב-int main. זה לא אומר ש-void main לא יעבוד (כי יש קומפיילרים שתומכים בזה למרות שזה לא תקני), זה פשוט אומר שזה לא נכון, ויש קומפיילרים שבהם זה לא יעבוד.חוץ מזה, iostream, יחד עם cin/cout, היא חבילה ופונקציות של הספרייה הסטנדרטית של ++C. אם אתה לומדים C, אתם צריכים לעבוד עם stdio.h ו-scanf/printf, מהסיבה הפשוטה ש-cin/cout לא קיימים בכלל בשפה הזו.
פורסם 2009 בנובמבר 1616 שנים כמו שאמרתי:את power_of_x אתה צריך לכפול פעמיים ב-x בכל איטרציה (שים לב שלפני האיטרציה הראשונה תאתחל אותו ב-x ולא ב-1, כדי לקבל את כל החזקות האי-זוגיות, ולא הזוגיות).את azeret אתה צריך לאתחל ב-1, ואז: באיטרציה הראשונה (כש-i=1) אתה צריך לכפול ב-2 וב-3, באיטרציה השנייה (כש-i=2) אתה צריך לכפול ב-4 וב-5, באיטרציה הבאה ב-6 וב-7, וכן הלאה. כלומר, תחשוב באיזה ביטוי (שתלוי ב-i) צריך לכפול את azeret.
פורסם 2009 בנובמבר 1616 שנים מחבר power = x; atzeret = 1; value = 1; for ( i=1 ; i<=10 ; i++) { atzeret = atzeret*2*i*(i-1); power = power*x*x; value = value+(power/atzeret); } cout<<value<<"\n";}הפלט שמתקבל הוא 1.#inf לא משנה מה אני קולט.(אל תתיחס לתנאי הלולאה. הוא סתמי בינתיים)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.