פורסם 2011 באוגוסט 314 שנים זה תרגיל מספר אז אם מישהו רוצה לראות עמודים 71-73בחלק הראשון של התרגיל (שהצלחתי לעשות) צריך להגדיר את המחלקה rational (מספר רציונאלי) ועוד כמה פעולותבחלק השני צריך להוסיף שתי פעולות(חיבור וחיסור מספרים רציונאלים) אבל אסור לשנות את המחלקה rational. זו המחלקה rational using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Rational { private int mone; private int mechane; public Rational(int x, int y) { this.mone = x; this.mechane = y; } public int GetMone() { return this.mone; } public int GetMechane() { return this.mechane; } public bool IsEquale(Rational num) { return this.mone * num.mechane == num.mone * this.mechane; } public Rational Multiply(Rational num) { Rational NEW = new Rational(0, 0); NEW.mone = this.mone * num.mone; NEW.mechane = this.mechane * num.mechane; return NEW; } public override string ToString() { string str = this.mone + "," + this.mechane; return str; } }}זו התוכנית שבודקת את הפעולות using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Rational a = new Rational(4, 6); Rational b = new Rational(2, 3); Console.WriteLine(a.add(b)); } }}אחרי שעשיתי את שתי אלה עשיתי מחלקה נוספת שבה יש את הפעולות החדשות אבל זה מזהה הרבה מאוד טעויות. איך מתקנים אותם??[attachment deleted by admin]
פורסם 2011 באוגוסט 314 שנים בשום מקום לא הגדרת ל-class2 פונקציות בשם GetMone ו-GetMechane (וגם אתה לא אמור להגדיר). קרא שוב את הדרישה של התרגיל.וכבר אמרתי לך קודם - לא נהוג להשתמש ב-this, אלא אם חייבים (על מנת למנוע כפילות).ועוד הערה - תימנע מלהשתמש בשמות מבלבלים למשתנים. NEW זה לא שם טוב למשתנה, כי קל להתבלבל בינו לבין המילה השמורה new. בכלל, לא מומלץ לעשות משתנים עם שמות דומים מדי (במיוחד אם כל ההבדל הוא בין אותיות קטנות וגדולות, כמו x ו-X). חוץ מזה, יש קונבנציות בנוגע לאותיות קטנות וגדולות - שמות שמורכבים מאותיות גדולות בלבד בד"כ משמשים לקבועים (const או readonly).
פורסם 2011 באוגוסט 314 שנים מחבר שיניתי את הפעולות (צריך להיות static נכון?) :class class2 { public static double add(Rational num1,Rational num2) { return num1.GetMone() / num1.GetMechane() + num2.GetMone() / num2.GetMechane(); } public static double less(Rational num1,Rational num2) { return num1.GetMone() / num1.GetMechane() - num2.GetMone() / num2.GetMechane(); } }התוכנית: Rational a = new Rational(100, 6); Rational b = new Rational(2, 3); Console.WriteLine(class2.add(a, b));כשאני מפעיל אותה יוצאת לי תשובה שגויה במקום לכתוב ש 100/6 +2/3=17.333333 זה אומר לי שזה שווה 16.
פורסם 2011 באוגוסט 314 שנים א. כשמחלקים int ב-int התוצאה יוצאת int. אתה צריך להמיר אחד מהם לפחות ל-double לפני החלוקה.ב. אני די בטוח שהמטרה של התרגיל היא שהפונקציות add ו-less (שצריכה להיקרא subtract, אגב) אמורות להחזיר Rational, ולא double - כמו המתודה Multiply.
פורסם 2011 באוגוסט 314 שנים מחבר ב. אני די בטוח שהמטרה של התרגיל היא שהפונקציות add ו-less (שצריכה להיקרא subtract, אגב) אמורות להחזיר Rational, ולא double - כמו המתודה Multiply.אבל בשביל זה אני צריך גישה לתכונות mone ו mechane והם הוגדרו כפרטיות. או שאני טועה??
פורסם 2011 באוגוסט 314 שנים מחבר התכוונת לזה? (זה עובד) Rational s = new Rational(num1.GetMone() * num2.GetMechane() + num2.GetMone() * num1.GetMechane(), num1.GetMechane() * num2.GetMechane()); return s; תודה על העזרה
פורסם 2011 באוגוסט 314 שנים בדיוק שים לב שגם ב-Multiply אתה אמור לעשות משהו דומה (כלומר ליצור את ה-Rational עם המונה והמכנה המתאימים).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.