עבור לתוכן

התוכנה של שפת C

Featured Replies

פורסם
  • מחבר

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

מאיפה אתה הורדת את זה? אתה לא יכול להביא לי קישור?

ואחי אין לי אייסי, אפשר בפרטי. אבל למה מה הבעיה למה אי אפשר פה?

  • תגובות 79
  • צפיות 11k
  • נוצר
  • תגובה אחרונה
פורסם

באייסי יש כל מיני אפשרויות שאין בהודעות פרטיות...

כמו שליחת קבצים...

פורסם
  • מחבר

תודה, כבר התקנתי את זה וזה לא עבד טוב, אז קיצר אני חוזר לגרסה 4.5 שעבדה הכי נורמלי אצלי.

עכשיו רק דבר אחד, הנה כתבתי תוכנה שמכניסים בה 3 מספרים והיא מחשבת את הממוצע שלהם:

http://pics.sendit.co.il/pic/d556605265.jpg

ואני אני מפעיל אותה, ואני מכניס 3 מספרים והכל, ואז היא מראה לי את התוצאה:

d6788731a0.jpg

פורסם

בתוך ה-printf רשמת לו %i, שזה אומר להדפיס מספר שלם.

אתה צריך לשים %f.

פורסם
  • מחבר

וואלה אחי עשיתי מה שאמרת וזה הלך טוב. אבל איך זה הגיוני? הרי לפי מה שכתוב במדריך ב-UNDERWAR , הסימן if% מציין מספר רציונלי. ומספר שלם זה בכלל d% . וחוץ מזה התוכנה עצמה שכתבתי עכשיו היא מועתקת מהמדריך וככה זה כתוב שם בדיוק....

עריכה: וואי עכשיו בדקתי במדריך אחר, וראיתי משתנה דומה שנקרא FLOAT, שאפשר להכניס בו כל מספר (שלם או רציונלי) ובתוצאה (של חיבור/חיסור וכו') הוא מציג את התוצאה בדיוק, גם אם מכניסים מספרים שלמים, וגם אפשר להכניס ערכים גדולים יותר. אז למה בעצם צריך את DOUBLE?

פורסם

אין לי מושג מה זה אומר if, אולי זו סתם שגיאת דפוס.

מספר שלם זה יכול להיות d או i.

תקרא כאן http://www.cplusplus.com/ref/cstdio/printf.html

Double הוא קיצור של double precision floating point.

(בניגוד ל-float, שהוא סתם קיצור של floating point)

double משתמש ביותר ביטים בשביל לייצג את המספר (במעבדי 32 ביט, float הוא 16 ביט ו-double הוא 32 ביט), ולכן מגיע לרמת דיוק יותר גבוהה.

פעם (על מעבדי 16 ביט) היה עדיף להשתמש ב-float, כי העבודה איתו הייתה יותר מהירה מאשר עם double וגם הוא תופס פחות מקום.

היום עדיף לעבוד עם double, כי ה-ALU (יחידת העיבוד האריתמטית) עובדת עם double-ים ולא עם float-ים. הסיבה היחידה להשתמש ב-float-ים היא אם באמת ההבדל בגודל משמעותי מבחינתך.

פורסם
  • מחבר

הנה תראה במדריכים פה:http://www.underwar.co.il/library.asp?Page=Programming

ופה: http://clang.eitan.ac.il/index.php?doc=chp&id=2

אומרים ש-%IF זה הסימן שמשתמשים לDOUBLE.

זה לא יכול להיות שגיאת כתיב כי זה מופיע בכל המדריך ככה...

ולא הבנתי איך בדיוק DOUBLE \ה יותר מדוייק?

הנה קח לדוגמא את התוכנית הזו:

f3c5680846.jpg

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

לעומת זאת אם תשנה לDOUBLE בכלל לא תיהיה תוצאה קשורה, וכדי לקבל תוצאה בעזרת DOUBLE נראה לי שצריך לעשות CASTING או משהו כזה....

וגם אתה יכול להכניס בFLOAT ערך גדול יותר. אז למה להתסבך סתם?

אולי תראה לי דוגמא לשימוש בDOUBLE כך שלא משנה איזה שני מספרים תכניס- התוצאה תיהיה טובה

פורסם

א) מה זה מדוייק יותר?

ב) לא משנה המספר הכי גבוה שאתה יכול להכניס, אלא מספר הספרות הנכונות אחרי הנקודה.

ג) אם אתה רוצה מספר ממש גדול, עם דיוק, תיקח 2 LONGים - אחד יהייה אחרי הנקודה, ואחד אחרי(אתה יכול ליצור ממשק שיממש את זה).

פורסם
  • מחבר

זה לא רק מספר גדול, זה כל מספר.

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

בשימוש בDOUBLE כמובן

פורסם

double d1, d1;
scanf("%f%f", &d1, %d2);
printf("%f", (d1+d1)/2);

אני לא מבין מה הבעיה.

פורסם

מדויק יותר = אתה יכול לשים יותר ספרות אחרי הנקודה.

ולגבי ה-if - זה lf, לא if (כלומר L ולא I). זה לא שגיאת כתיב :)

במקרה הפשוט שנתת באמת אין עדיפות של double על float, אבל יש במקרים של חישובים יותר מורכבים יש עדיפות.

אם נניח אני ארצה לחשב ממוצע של מספרים קצת יותר מסובכים, כמו 5.246982398794 + 6.34987928734, עדיף להשתמש ב-double.

פורסם

אין לי מושג מה זה אומר if, אולי זו סתם שגיאת דפוס.

מספר שלם זה יכול להיות d או i.

תקרא כאן http://www.cplusplus.com/ref/cstdio/printf.html

Double הוא קיצור של double precision floating point.

(בניגוד ל-float, שהוא סתם קיצור של floating point)

double משתמש ביותר ביטים בשביל לייצג את המספר (במעבדי 32 ביט, float הוא 16 ביט ו-double הוא 32 ביט), ולכן מגיע לרמת דיוק יותר גבוהה.

פעם (על מעבדי 16 ביט) היה עדיף להשתמש ב-float, כי העבודה איתו הייתה יותר מהירה מאשר עם double וגם הוא תופס פחות מקום.

היום עדיף לעבוד עם double, כי ה-ALU (יחידת העיבוד האריתמטית) עובדת עם double-ים ולא עם float-ים. הסיבה היחידה להשתמש ב-float-ים היא אם באמת ההבדל בגודל משמעותי מבחינתך.

בתיקון קל - ברוב המעבדים היום וכן בתקנים הנפוצים (לדוגמא IEEE 754) מספרי single precision הם 32bit ו-double הם 64bit.

על כן double יהיה 64 ו-float יהיה 32.

פורסם
  • מחבר

double d1, d1;
scanf("%f%f", &d1, %d2);
printf("%f", (d1+d1)/2);

אני לא מבין מה הבעיה.

תראה מה הבעיה- כתבתי את התוכנית הזאתי (רק עם תיקונים קטנים, שמת % במקום &, ורשמת פעמיים D1). ותראה מה התוצאה הייתה:

032e4a3d15.jpg

מדויק יותר = אתה יכול לשים יותר ספרות אחרי הנקודה.

ולגבי ה-if - זה lf, לא if (כלומר L ולא I). זה לא שגיאת כתיב :)

במקרה הפשוט שנתת באמת אין עדיפות של double על float, אבל יש במקרים של חישובים יותר מורכבים יש עדיפות.

אם נניח אני ארצה לחשב ממוצע של מספרים קצת יותר מסובכים, כמו 5.246982398794 + 6.34987928734, עדיף להשתמש ב-double.

רגע אז מתי צריך להשתמש בLF ?

פורסם

lf% כשקוראים double

f% עבור float

d% עבור int

ld% עבור long.

פורסם

בדיוק.

ב-printf תנסה לשים %lf במקום %f, אולי זה יפתור את הבעיה.

ארכיון

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

דיונים חדשים