עבור לתוכן

העמסת אופרטור *. מספר יכול לבוא לפני או אחרי *

Featured Replies

פורסם

שלום לכם.

אני כותב תרגיל בשפת ++C.

יש לי מחלקה, שמימשתי עבורה את האופרטור * - כפל.

Polynomial operator * (double x);

עכשיו, אמרו שצריך לטפל במצב שיש לי משהו כמו:

Polynomial temp = poly2 * 10;

וגם למצב:

Polynomial temp = 10 * poly2;

מיותר לציין שפולי2 וטמפ הם מאותו מחלקה.

איך אני גורם לאופרטור לעבוד גם כשהמספר בא קודם וגם כשהאובייקט בא קודם?

ועוד שאלה, איך אני מקזז double בהדפסה, שיופיע רק עם 2 ספרות אחרי הנקודה?

תודה מראש לעוזרים.

פורסם

הממ לא הצלחתי למצוא איך לעשות את זה חוץ מהשיטה של friend function

http://www.learncpp.com/cpp-tutorial/92-overloading-the-arithmetic-operators/

תקרא את Overloading operators for operands of different types

לגבי מספר הספרות אחרי נקודה: נראה לי שזה הולך ככה:

std::cout << std::setprecision(2) << 3.123456789f;

וזה ידפיס רק 3.12 או 3.13 (לא זוכר אם זה מעגל, ואם כן אני גם לא בטוח אם זה יעגל במקרה שלי).

פורסם
  • מחבר

תודה חבר.

עכשיו יש לי בעיה אחרת. הקוד מצורף למטה.

משום מה כשאני מנסה לקמפל הוא קופץ לי עם שגיאות על זה שיצרתי אובייקטים בmain.

על מה ולמה?

מודה על העזרה מראש.

[attachment deleted by admin]

פורסם

למיטב זכרוני לא צריך friend functions או global operators. תכתוב אופרטור המרה מ-double ל-Polynomial.

פורסם
  • מחבר

סבבה, הסתדרתי.

דומה למה שמאסטרDK אמר פשוט ככה:

cout.precision(5);

cout<<"4.412412412431243

והוא ידפיס רק 5 ספרות אחרי הנקודה.

תודה רבה לעוזרים.

פורסם


#include <iostream>
#include <iomanip>

לא עוזר?

פורסם
  • מחבר

לא עובד לי עדיין.

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

אני צריך שגם אם יש לי 0 בלי ספרות אחרי הנקודה בdouble שלי

הוא יודפס 0.00. אין דרך לעשות את זה?

פורסם

בבקשה:


[ skwo@Moonlight dev ] cat test.cpp
#include <iostream>
#include <iomanip>

int main(){
double a = 0;

std::cout << std::fixed << std::setprecision(2) << a << std::endl;

return 0;
}
[ skwo@Moonlight dev ] g++ test.cpp
[ skwo@Moonlight dev ] ./a.out
0.00
[ skwo@Moonlight dev ]

ארכיון

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

דיונים חדשים