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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 15:20   #1
Diman410
Новичок
Джуниор
 
Регистрация: 14.12.2010
Сообщений: 2
Злость Работа с матрицей С#

Описать класс, обеспечивающий представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы, доступа по индексам к элементу матрицы. Написать программу, демонстрирующую все разработанные элементы класса.
Вот что у меня получилось:

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace new_V4_p4
{
    class Program
    {
        static void Main(string[] args)
        {
            int N, M,que=1;
            Console.WriteLine("Введи размер матрицы NxM");
            N = int.Parse(Console.ReadLine());
            M = int.Parse(Console.ReadLine());
            Matrix mat = new Matrix(N, M);//Создали матрицу
            
            Console.WriteLine("Заполни матрицу");
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < M; j++)
                {
                    mat[i, j] = Double.Parse(Console.ReadLine());
                }
            }

            while(que!=0)
            {
                Console.WriteLine("Введите цифру для продолжения:");
                string er = Console.ReadLine();
                que = Convert.ToInt32(er);
                switch (que)
                {
                    case 1:
                        {
                            Console.WriteLine("------Матрица------");
                            mat.Print();//Вывод матрицы
                            break;
                        }
                    case 2:
                        {
                            Console.WriteLine("------Подматрица------");
                            Console.WriteLine("Введите координаты подматрицы");
                            mat.Print1();//Вывод матрицы
                            break;
                        }
                }
                }
            Console.ReadLine();

        }
    }
}
class Matrix
{
    private double[,] matrix;
    private int N, M;

    public Matrix()
    {
        matrix = new Double[0, 0];
        this.N = 0;
        this.M = 0;
    }
    public Matrix(int N, int M)
    {
        matrix = new Double[N, M];
        this.N = N;
        this.M = M;
    }

    public int iN
    {
        get
        {
            return N;
        }
        set
        {
            this.N = value;
        }
    }
    public int iM
    {
        get
        {
            return M;
        }
        set
        {
            this.M = value;
        }
    }


    public double this[int x, int y]
    {//Индексатор

        set
        {//Записывает
            if (N >= x && M >= y && x >= 0 && y >= 0)
            {
                matrix[x, y] = value;
            }
            else
            {
                Console.WriteLine("Неверно задан номер ячейки");
                matrix[x, y] = 0;
            }

        }
        get//Считывает
        {
            if (N >= x && M >= y && x >= 0 && y >= 0)
            {
                return matrix[x, y];
            }
            else
            {
                Console.WriteLine("Неверно задан номер ячейки");
                return 0;
            }
        }
    }
    public void Print()
    {
        for (int i = 0; i < N; i++)
        {
            Console.WriteLine();
            for (int j = 0; j < M; j++)
            {
                Console.Write(" {0} ", matrix[i, j]);
            }
        }
    }
    public void Print1()
    {
        int r = int.Parse(Console.ReadLine());
        int s = int.Parse(Console.ReadLine());
        Matrix mat1 = new Matrix(r, s);
        for (int i = 0; i <M; i++)
        {
            Console.WriteLine();
            for (int j =0 ; j <N; j++)
            {
                if (M < r || N < s)
                {
                 mat1[r,s]=matrix[i, j]=0;
                 Console.Write(" {0} ", matrix[i, j]);
                 break;
                }
                Console.Write(" {0} ", matrix[i, j]);
            }
        }
    }

}
Выдаёт ошибку при выводе подматрицы. И нужно написать вывод элемента по индексам.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 29.03.2011 в 15:37.
Diman410 вне форума Ответить с цитированием
Старый 29.03.2011, 16:47   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

а разьве подматрица не 4-мя индексами должна задаваться?
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицей xarti Общие вопросы C/C++ 11 18.01.2011 15:31
Работа с матрицей admiral121 Помощь студентам 1 23.12.2010 16:08
работа с матрицей mego4el Общие вопросы C/C++ 4 22.12.2010 02:52
Работа с матрицей JeyKip Общие вопросы C/C++ 4 25.10.2009 22:47
Работа с матрицей Absent Помощь студентам 3 17.05.2008 22:20