צריך עזרה בבניית אלגוריתם - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

צריך עזרה בבניית אלגוריתם


Rule The Pc

Recommended Posts

הרבה יותר מדוייק ומהיר לחשב את זה ע"י טור

לא נראה לי, כי אתה צריך לחשב של עצרת(בטור) שרק זה עובד בO)N(, אלא אם כן אתה שומר את האחרון, ועושה עוד כל מיני דברים. בכל מקרה, חישוב הגבול יותר יעיל. אם אני טועה אנא תקנו אותי. בשביל הגבול נציב רק ערכים שלמים, כי כך זה יהייה יעיל יותר.

קישור לתוכן
שתף באתרים אחרים

אתה לא צריך לחשב עצרת כל פעם, את סה"כ צריך כל פעם לכפול את הערך הקודם ב-n

כן, הבנתי את זה.

היתרון של חישוב הטור הוא שכל פעם מחשבים רק חלק קטן מהמספר ולא את כולו כמו במקרה של הגבול, בנוסף הגבול פחות מדויק בספרות האחרונות

אז זה לא בדקתי.

קישור לתוכן
שתף באתרים אחרים

הרצון הוא יפה, אבל זה יותר מסובך ממה שחושבים פה.

גודלו של double הוא בסה"כ 8 בתים (קצת יותר מ- 300 ספרות אחרי הנקודה), זה רחוק מאד ממיליון ספרות אחרי הנקודה. יש פה בעית מימוש. אפשרי אבל דורש טיפול מיוחד.

קישור לתוכן
שתף באתרים אחרים

אני מציע לך לחשב את זה עם טור ולא עם הגבול ולעבור עם string במקום double או float ולכתוב בעצמך פונקציות שעושות חיבור חיסור כפל וחילוק של שני מחרוזות (לא רק של מספרים שלמים)

ככה תוכל להגיע לכל רמת דיוק שרק תרצה (אפילו 1,000,000 ספרות אחרי הנקודה אם המחשב שלך מסוגל לעשות את זה בזמן סביר)

קישור לתוכן
שתף באתרים אחרים

נו בסדר, ב string אתה יכול להציג כמה תווים שאתה רוצה, אבל זה עדיין לא פותר את בעיית המימוש הלא פשוטה של האלגוריתם הזה.

לדעתי יש צורך בשינוי דרך החישוב עצמה, ולא רק בדרך שבה מכניסים את התוצאה למשתנה. הרי גם החישוב עצמו מוגבל לאותם 8 בתים.

איך בדיוק עושים את זה? אני אישית לא מתכנן לחשוב על זה כרגע, אבל למי שיש פתרון מוזמן לענות.

זו בעיה תכנותית די מעניינת, ללא קשר לבעיה המסויימת פה. חישובים בדיוקים גבוהים מאד בשפת C - איך?

קישור לתוכן
שתף באתרים אחרים

זה לא רק העניין של להכניס את התוצאה ל-string

זה גם לעשות את כל החישובים על string

אתה צריך לממש פונקציה שתדע לחבר/להחסיר/לחלק/לכפול מחרוזת אחת לשניה בלי להמיר את זה ל-double

זה אומר שאתה צריך לממש בעצמך

1. חילוק ארוך (כמו שלומדים ביסודי) של שני מספרים עשרוניים

2. כפל של שני מספרים עשרוניים (שכמובן הכפל משתמש בחיבור)

3. חיבור וחיסור זה קל

קישור לתוכן
שתף באתרים אחרים

למה שכפל ישתמש בחילוק?

מספרים עשרוניים כופלים בדיוק כמו מספרים שלמים ורק צריך לדאוג לשים את הנקודה במקום המתאים.

אין שברים (לפחות לא בצורה של מונה ומכנה), יש רק מספרים עשרוניים.

קישור לתוכן
שתף באתרים אחרים

q4b.gif

הקוד הזה מחשב את המספר e עד דיוק של אלפי ספרות בינאריות ומדפיס אותו (ב ASSMBLER כמובן....).

השאלה הופיע בתחרות CODEGURU ואף אחד לא הצליח לפתור אותה במהלך התחרות...

http://www.codeguru.co.il/question.asp#q3

וגם הראתי אותה למספר מומחים, והם גם לא הבינו שזה טור שמחשב את e :) :) :)

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...