تخفیف های ویژه روز دانشجو! تا ۹۰ درصد تخفیف! تخفیف های ویژه روز دانشجو! تا ۹۰ درصد تخفیف!
مانده تا پایان تخفیف
مشاهده دوره‌ها
0

مشکل کد نوشته شده برای استفاده از تابع مجازی

با سلام . مشکل این کد در استفاده از توابع مجازی چیه؟؟ ( ممنون میشم راهنمایی کنید)

class Program
    {
        static void Main(string[] args)
        {
            circle c = new circle();
            c.calculate;
            Console.ReadKey();
        }
         
           class circle
        {
            public static void circle1()
            {
                int X;
                Console.WriteLine("please enter x:");
                X = int.Parse(Console.ReadLine());
            }
            public virtual void calculate(int x)
            {
                Console.WriteLine("area1 ={ 0}", 2 * 3.14 * x);
            }
            public override void calculate(int x)
            {
                Console.WriteLine("s ={ 0}", 3.14 * x*x);
            }
        }
    }  
پرسیده شده در 1396/03/10 توسط

3 پاسخ

1

قسمت main را به شکل زیر تغییر بدید

  circle c = new circle();
          
  int num;
Console.WriteLine("Enter a number");
            num = int.Parse(Console.ReadLine());
            c.calculate(num);
            Console.ReadKey();
پاسخ در 1396/03/10 توسط
0

بعد یک سوال دیگه اینکه الان در این کد شما برای x عدد 6 رو در نظر گرفتید درصورتی که من میخواستم کد یجوری باشه که از کاربر عدد رو بگیره و ذخیره کنه که در یک قسمت از کد هم اینو نوشتم در این صورت x هر عددی میتونه باشه. ولی الان x 6 هست. میشه درباره ی این هم توضیح بدید؟؟ممنون

پاسخ در 1396/03/10 توسط
1

سلام به شما دوست عزیز.

مشکلاتی که کد شما داره اینه که اول شما داخل تابع main برای فراخوانی تابع فقط اسم تابع calculate رو نوشتید و ورودی و آرگومانش رو مشخص نکردید.

مشکل دومی که برنامه شما داره اینه که هم یک متد مجازی دارید و هم یه متد واقعی. توی یه کلاس شما حق این کار را ندارید و باید در یک کلاس شما یک متد را به صورت مجازی تعریف کنید و در کلاس فرزند آن را override کنید. من کد شما رو به شکل زیر تغییر دادم

public class CircleAbstract
        {
            public virtual void calculate(int x)
            {
                Console.WriteLine("area1 ={ 0}", 2 * 3.14 * x);
            }
        }
        class circle:CircleAbstract
        {
            public static void circle1()
            {
                int X;
                Console.WriteLine("please enter x:");
                X = int.Parse(Console.ReadLine());
            }
           
            public override void calculate(int x)
            {
                Console.WriteLine("s ={ 0}", 3.14 * x * x);
            }
        }
        static void Main(string[] args)
        {
            circle c = new circle();
            c.calculate(6);
            Console.ReadKey();
}
پاسخ در 1396/03/10 توسط

پاسخ شما