עבור לתוכן

חישוב log בשפת C.

Featured Replies

פורסם

זקוק לעזרה בכתיבת פונקציה שמחשבת LOG כאשר היא מקבלת את הבסיס ואת המספר עצמו.

עד עכשיו הצלחתי לבצע לוג עבור מספרים זוגיים אבל באי זוגיים הכל מתחרבש...

פורסם

זו לא פונקציה פשוטה לחישוב בכלל, אלא אם:

1) עושים הנחות מקלות רבות - למשל - רק מספרים שלמים וכו'

2) מותר להשתמש בפונקצייה מובנית שמחשבת לוגריתם בבסיס כלשהו - נגיד LN ואז - LOGAB = LNB/LNA. במקרה זה כמעט אין מה לעשות.

פורסם
  • מחבר

הפונקציה אמורה להתייחס למספרים שלמים גדולים מ 2, התוצאות מעוגלות כלפי מטה, והיא משתמשת ב int בלבד...

ואסור להשתמש באף פונקציה מובנית.

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

פורסם
  • מחבר


int log( int base,int x){
int n;




for (n=0; x>2; n++)
x/=base;
if (x>0 && x<2) return 2;




return n;}



פורסם

ערוך את ההודעה ושים את הקוד בתוך טג קוד (כפתור עם ציור #) כדי שיהיה יותר קריא.

פורסם

א. מה הטעם בשורה הזו?

if (x>0 && x<2) return 2;

ב. למה אתה ממשיך כל עוד x>2?

פורסם
  • מחבר

רק ככה זה לא היה מאפס לי התוצאה... ואני רץ עד המחלק האחרון .. כביכול.. לוקח מספר ורואה כמה פעמים הבסיס נכנס בו...

פורסם

אני כנראה מפספס פה משהו, הוא לא אמור לעשות את זה עם טור טיילור?

פורסם

זקוק לעזרה בכתיבת פונקציה שמחשבת LOG כאשר היא מקבלת את הבסיס ואת המספר עצמו.

עד עכשיו הצלחתי לבצע לוג עבור מספרים זוגיים אבל באי זוגיים הכל מתחרבש...

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

קח למשל בסיס 2 וx=3, אחרי חלוקה אחת אתה תכנס לתוך התנאי (x שווה ל1 ולכן קטן מ2 וגדול מאפס) ולכן זה יחזיר לך 2 באופן קבוע (גם אם x היה 7 ואחרי 2 חלוקות הפך להיות 1).

תחשוב איך לשנות את התנאי שלך כדי שזה לא יקרה.

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

ארכיון

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

דיונים חדשים