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

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


Rule The Pc

Recommended Posts

אהלן

נראה לי שרובכם מכירים את התוכנה PI היא מחשבת ספרות אחרי הנקודה.... יעני אם אתה אומר לך 1M אז היא תחשב מיליון ספרות אחרי הנקודה

עכשיו אני חשבתי על תוכנה דומה רק שבמקום PI זה יהיה e

e הוא קבוע שהוא בערך 2.74 אבל הוא אירציולי כמו PI

e=lim(1+1/n)^n

אני די בטוח בקשר לנווסחא כאילו המורה הפרטית שלי אמרה לי אותה

איך אני עושה אלגוריתם שיחשב לי מיליון ספרות אחרי הנקודה למספר e?

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

דבר 1

הנוסחא היא

e= lim

n->inf

השאר נכון.

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

(אגב יש עוד דרך לחשב אותו בעזרת טורים סימגא(1/k!) שK הולך מ0 לinf

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

/*

* exp1.c

* This program approximates the natural base (e).

*/

#include <stdio.h>

int main ()

{

  int      n_iters;        /* Number of approximations to perform. */

  int      n;              /* Current iteration index. */

  double   base;

  double   curr_app;       /* The current approximation. */

  int      i;

  /* Read the number of approximation iterations to perform. */

  printf ("Please enter the number of iterations: ");

  scanf ("%d", &n_iters);

  /* Perform the approximation iterations. */

  for (n = 1; n <= n_iters; n++)

  {

    /* Compute the cuurent approximation:

     *

     *                n

     *   e ~ (1 + 1/n)

     */

    base = 1 + 1 / (double)n;     /* We must cast, to get a result different

     than 1 (1 + 1.0 / n will also work). */

    /* Raise the base to the n'th power. */

    curr_app = 1;

    for (i = 0; i < n; i++)

      curr_app *= base;

    /* Print the current approximation.*/

    printf ("Iteration no. %d, e ~ %g\n", n, curr_app);

  }

  return (0);

}

איך עושים יישור לימין ?

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

/*
* exp1.c
* This program approximates the natural base (e).
*/

#include <stdio.h>

int main ()
{
int n_iters; /* Number of approximations to perform. */
int n; /* Current iteration index. */
double base;
double curr_app; /* The current approximation. */
int i;

/* Read the number of approximation iterations to perform. */
printf ("Please enter the number of iterations: ");
scanf ("%d", &n_iters);

/* Perform the approximation iterations. */
for (n = 1; n <= n_iters; n++)
{
/* Compute the cuurent approximation:
*
* n
* e ~ (1 + 1/n)
*/
base = 1 + 1 / (double)n; /* We must cast, to get a result different
than 1 (1 + 1.0 / n will also work). */

/* Raise the base to the n'th power. */
curr_app = 1;
for (i = 0; i < n; i++)
curr_app *= base;

/* Print the current approximation.*/
printf ("Iteration no. %d, e ~ %g\n", n, curr_app);
}

return (0);
}

איך עושים יישור לימין ?

תסמן את הקוד ואז איפה שהמיילים יש כוכבית

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

הממממ, לא הבנתי שורה אחת מכול הקוד אבל לא משנה

(יש לך לחצן למעלה שעושה ישור לימין)

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

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

בהצלחה :s05:

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

הוא עושה את זה טיפה אחרת

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

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

לעשות תוכנית שמחשבת את E לא יתהייה כל כך אפקטיבית(חוץ מתוכנת בנצמרק) מכיוון שאתה יכול פשוט להציב N מספיק גדול כדי להגיע לקירוב מספק. אני ממליץ לכם לקרוא קצת על טורי טיילור ומקלורן(ועל מבחן לייבניץ) כדי לדעת יותר על קירובים. משתמשים בזה בעיקר באינטגרלים מסויימים, שאתה לא יודע למצוא את הפונ הקדומה שלהם ולחסר, אבל בקלות אתה יכול למצוא קירובים לE(יותר נכון E בחזקת אחד). מבחן לייבניץ במקרה הנ"ל יתן לך פיתרון. כל פעם אתה מבקש ממנו דיוק עד הספרה הNית(0.5*10-n(, והוא נותן לך בערך את המספר עד אותה ספרה(כמובן שיכולים להיות גם כמה ספרות אחרי שלא קשורות לכלום, אתה פשוט לוקח את הספרה שביקשת).

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

ארכיון

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

×
  • צור חדש...