Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 21:34   #1
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию Многомерные массивы MultiArrs в C#

Добрый вечер!)Нужна помощь)
Задача
1. Написать функцию MultMatr умножения матриц:
a. Функция получает две матрицы, произвольного размера;
b. Функция возвращает результирующую матрицу в случае, если умножение возможно, и пустую матрицу, если не возможно;
c. Для определения размерности матрицы можно воспользоваться методом GetLength(), у которой в качестве параметра указывается номер измерения (счет измерений начинается с нуля);
2. В классе Arrs напишите функцию PrintArr2 для вывода матрицы на печать;
3. В классе Arrs напишите функцию CreateAr2 заполнения двумерного массива произвольными числами (по аналогии с одномерным массивом);
4. Создайте две матрицы размерностью 3*3. Инициализируйте их. Выполните функцию умножения и значения всех трёх матриц выведите на экран.
Код:
Код:
namespace ArrayMatr
{
    class Program
    {
        class Arr
        {
            private  static Random rnd = new Random();
            public static void CreateOneDimArrs(int[] A)
{
        for(int i = 0; i<A.GetLength(0);i++)
                A[i] = rnd.Next(1,100);
}
            public static void PrintAr2(string name,int[] A)
{
        Console.WriteLine(name);
        for(int i = 0; i<A.GetLength(0);i++)
                Console.Write("\t" + name + "[{0}]={1}", i, A[i]);
        Console.WriteLine();
}
public void MultMatr(int[,]A, int[,]B, int[,]C)
{
        if (A.GetLength(1) != B.GetLength(0))
                Console.WriteLine("MultMatr: ошибка размерности!");
        else
                for(int i = 0; i < A.GetLength(0); i++)
                        for(int j = 0; j < B.GetLength(1); j++)
                        {
                                int s=0;
                                for(int k = 0; k < A.GetLength(1); k++)
                                        s+= A[i,k]*B[k,j];
                                C[i,j] = s;
                        }
}
public void TestMultiArr()
{
        int[,]matrix = {{1,2},{3,4}};
        Arr.PrintAr2("matrix", matrix);
}
        static void Main(string[] args)
        {
        int n1, m1, n2, m2,n3, m3;
        Arr.GetSizes("MatrA",out n1,out m1);
        Arr.GetSizes("MatrB",out n2,out m2);
        Arr.GetSizes("MatrC",out n3,out m3);
        int[,]MatrA = new int[n1,m1], MatrB = new int[n2,m2];
        int[,]MatrC = new int[n3,m3];
        Arr.CreateTwoDimAr(MatrA);Arr.CreateTwoDimAr(MatrB);
        Arr.MultMatr(MatrA, MatrB, MatrC);
        Arr.PrintAr2("MatrA",MatrA); Arr.PrintAr2("MatrB",MatrB);
        Arr.PrintAr2("MatrC",MatrC);
}
       }
    }
}
Выдаёт ошибки:
-"ArrayMatr.Program.Arr" не содержит определение для "GetSizes"
-"ArrayMatr.Program.Arr" не содержит определение для "CreateTwoDimAr"
-Аргумент "2": преобразование типа из "int[*,*]" в "int[]" невозможно
-Наиболее подходящий перегруженный метод для "ArrayMatr.Program.Arr.PrintAr2(str ing, int[])" имеет несколько недопустимых аргументов
-Для нестатического поля, метода или свойства "ArrayMatr.Program.Arr.MultMatr (int[*,*], int[*,*], int[*,*])" требуется ссылка на объект
Otar4ik вне форума Ответить с цитированием
Старый 29.03.2011, 15:48   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Код:
        static void Main(string[] args)
        {
            Arrs MatrA = new Arrs(2, 8);
            MatrA.CreateArr2();
            Arrs MatrB = new Arrs(8, 7);
            MatrB.CreateArr2();
            Arrs MatrC = new Arrs(MatrA, MatrB);
            if (MatrC.Matr() == null)
            {
                Console.WriteLine("MultMatr: ошибка размерности!");
            }
            else
            {
                MatrA.PrinteArr2();
                MatrB.PrinteArr2();
                MatrC.PrinteArr2();
            }
            Console.ReadLine();

        }
    }
    class Arrs
    {
        int[,] Matrix=null;
        public Arrs(int n, int m)
        {
            Matrix = new int[n, m];
        }
        public Arrs(Arrs A, Arrs B)
        {
            {
                if (A.Matrix.GetLength(1) != B.Matrix.GetLength(0))
                    return;// Console.WriteLine("MultMatr: ошибка размерности!");
                else
                {
                    Matrix = new int[A.Matrix.GetLength(0), B.Matrix.GetLength(1)];
                    for (int i = 0; i < A.Matrix.GetLength(0); i++)
                        for (int j = 0; j < B.Matrix.GetLength(1); j++)
                        {
                            int s = 0;
                            for (int k = 0; k < A.Matrix.GetLength(1); k++)
                                s += A.Matrix[i, k] * B.Matrix[k, j];
                            Matrix[i, j] = s;
                        }
                }
            }

        }
        public void CreateArr2()
        {
            if (Matrix == null)
                return;
            Random R=new Random();
            for (int i=0;i<Matrix.GetLength(0);i++)
                for (int j=0;j<Matrix.GetLength(1);j++)
                    Matrix[i,j]=Convert.ToInt32(R.Next(500));
        }
        public void PrinteArr2()
        {
            if (Matrix == null)
                return;
            for (int i = 0; i < Matrix.GetLength(0); i++)
            {
                for (int j = 0; j < Matrix.GetLength(1); j++)
                    Console.Write(Matrix[i, j].ToString() + " ");
                Console.WriteLine();
            }
            Console.WriteLine();
        }
        public int[,] Matr()
        {
            return Matrix;
        }
    }
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многомерные массивы Zina123 Помощь студентам 1 12.12.2010 21:51
одномерные и многомерные массивы. С# junita Помощь студентам 0 03.12.2010 17:19
Многомерные массивы в delphi 7 Миша Л. Помощь студентам 1 08.06.2010 11:41
Многомерные массивы в delphi 7 Миша Л. Помощь студентам 11 07.06.2010 22:06
Многомерные массивы DDP Помощь студентам 1 19.12.2009 19:37