עבור לתוכן

תרגיל לא מובן בC#

Featured Replies

פורסם

שלום לכולם

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

בתכנית צריך להציב ב2 משתנים מספרים שונים ואז להחליף ביניהם לדוגמה:a=4 b=5,a=5 b=4 אני לא כל כך מבין איך לעשות את זה אני אשמח אם מישהו יוכל להסביר לי

פורסם

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

פורסם
  • מחבר

אתה יכול בבקשה להסביר לי כי אני לא כל כך מבין

פורסם

1)את הערך של A אתה שומר במשתנה הזמני.

2)אתה מכניס ל-A את הערך של B.

3) אתה מכניס ל-B את הערך של המשתנה הזמני.

פורסם
  • מחבר

מה זה המשתנה הזמני?

פורסם

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

פורסם
  • מחבר

תודה רבה לשניכם בצלחתי

פורסם
  • מחבר

מצטער על הדאבל

פורסם

הרבה יותר מאתגר (ואפשרי לחלוטין) זה לבצע swap ללא משתנה עזר.

פורסם

^ איך עושים את זה בלי משתנה עזר??

פורסם

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

פורסם

מצאתי אחד...

 double a=6;
double b=4;
a = b / a;
b = b / a;
a = a * b;

עריכה: מצאתי עוד דרך

double a=9;
double b=4;
a = b * a;
b = b * a;
a = b/a;
b = b / (a * a);

התכוונת לשתי הדרכים האלה??

פורסם

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

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

a = a + b;
b = a - b;
a = a - b;

והשיטה השנייה היא קצת יותר מתוחכמת (משתמשת בתכונה מסויימת של אופרטור השמה):

a ^= b ^= a ^= b;

השיטה משתמשת באותו עיקרון כמו הקודמת, אבל מסתמכת על כך ש-xor (אופרטור ^) היא פעולה הופכית לעצמה.

פורסם

וגם פעולות כפל וחילוק של double הן לא מדוייקות במחשב.

למה הם לא מדויקות??

פורסם

בגלל איך שהם עובדות מתחת לפני השטח. תקרא על המושג double precision. הפעולה 2\10 יכולה לצאת 5.000000000000000000035

לדוגמא.

ארכיון

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

דיונים חדשים