سربارگذاری عملگرها در C#

mozhgan22

عضو جدید
سلام
من می خوام رنامه جمع دو ماتریس تصادفی رو بنویسم اما تو قسمت کد عملگرم ارور دارم.کی تونید کمکم کنید؟:(
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace summatrix
{
    class Program
    {

       public static Random rand = new Random();
       [SIZE="3"][COLOR="navy"]public static Program operator +(matrix mat1, matrix mat2[/COLOR][/SIZE]);
       
        public static void initial(matrix mat)
        {
            for (int i = 0; i < matrix.dim; i++)
                for (int j = 0; j < matrix.dim; j++)
                {
                    
                    mat[i, j] = rand.NextDouble();
                }

        }



        public static void printmat(matrix mat)
        {
           for (int i = 0; i < matrix.dim; i++)
           {
               Console.Write("[");
                for (int j = 0; j < matrix.dim; j++)
                {
                    Console.Write("{0:.00}",mat[i,j]);
               Console.Write("  ");
                }
               Console.WriteLine("]");
           }
        }
        static void Main(string[] args)
        {
            matrix mat1 = new matrix();
            initial(mat1);
            Console.WriteLine("mat1:");
            printmat(mat1);
            matrix mat2 = new matrix();
            initial(mat2);
            Console.WriteLine("mat2:");
            printmat(mat2);
            matrix mat3 = new matrix();
            mat3 = mat1 + mat2;
            Console.WriteLine("mat3:");
            printmat(mat3);
            Console.ReadLine();

        }
    }
}
 

mozhgan22

عضو جدید
اینم کد کلاس :
کد:
class matrix
    {
        public  const  int dim=3;
       public double[,] mat=new double[dim,dim];


        public double this[int m, int n]
        {
            get
            {
                return mat[m, n];
            }
            set
            {
                mat[m, n] = value;
            }
        }class matrix
    {
        public  const  int dim=3;
       public double[,] mat=new double[dim,dim];


        public double this[int m, int n]
        {
            get
            {
                return mat[m, n];
            }
            set
            {
                mat[m, n] = value;
            }
        }
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام
بهتر بود پیغام خطا رو هم میذاشتی. فکر می کنم (البته با توجه به اینکه نمیدونم خطاش چیه) از بعد حلقه for باشه.
اندیس از 0 تا dim-1 باید باشد.
 

mozhgan22

عضو جدید
Error 1 One of the parameters of a binary operator must be the containing type G:\c#\summatrix\summatrix\Program.cs 11 31 summatrix

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

HH2BN1990

کاربر فعال
کد:
  public static Program operator +(matrix mat1, matrix mat2);
شما تو این قسمت نحوه ی جمع کردن 2 ماتریس ننوشتین !!! و اینکه حاصل از نوع matrix هستش نه Program

کد:
        public static matrix operator +(matrix a, matrix b)
        {
            matrix m = new matrix();
            for (int i = 0; i < matrix.dim; i++)
                for (int j = 0; j < matrix.dim; j++)
                {
                    m[i, j] = a[i, j] + b[i, j];
                }
            return m;
        }
این کد رو به کلاس ماتریس اضافی کنین و اون خطی که اررور می داد رو پاک کنین

لینک راهنمای MSDN
 
آخرین ویرایش:

mozhgan22

عضو جدید
ممنون
حل شد.
شما یه کتاب منسب و در سطح مبتدی میشناسین به من معرفی کنین؟
 
بالا