|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.12.2012, 00:16 | #1 |
Пользователь
Регистрация: 04.04.2012
Сообщений: 20
|
C#-массивы. (исправить)
помогите пожалуйста, а то ни как не додуматься.
нужно дописать неопределённый массив с помощью конструктора и вызвать с помощью индексатора: using System; //Описать класс, реализующий тип данных «матрица целых чисел». Класс должен //реализовывать метод проверки, является ли матрицы верхней треугольной. namespace ConsoleApplication1 { class Matrica { //поля public int a; //закрытое поле класса Marticia-для строк int b; //открытое поле класса Marticia-для столбцов int[,] M; //закрытое поле класса Marticia-для массива //свойство public int B //свойство для открытия доступа к полю'b' { get { return b; } //полученное значение 'b' set { b = value; } // запись' значения в 'b' } //индексатор public int this[int st,int sl] //индексатор для М,где'st' и 'sl'-индексы массива { get //получится { if (st >= 0 && st <= a && sl >= 0 && sl <= b) //условие для правильной инициализации ьассива в заданном ли диапозоне индексы 'st' и 'sl' return M[st,sl]; //получчение значемого элемента else { throw new FormatException(); //генерация ошибок о неверном вводе } } set { M[st,sl] = value; } //истоновить значение элемента } //конструктор public Matrica() //конструктор по умолчанию без параметров { this.a = 5; //полю а присваевается значение 5 this.b = 5; //полю b присваевается значение 5 this.M = new int[5, 5] { { 1, 2, 3, 4, 5 }, { 0, 7, 8, 9, 10 }, { 0, 0, -2, -6, 2 }, { 0, 0, 0, 5, 3 }, { 0, 0, 0, 0, -9 } }; //inisializaciya dvuhmernogo massiva znacheniyami } //конструктор public Matrica(int a, int b) //конструктор по умолчанию с параметрами { this.a = a; //полю а присваевается значение a this.b = b; //полю b присваевается значение b this.M = new int[a, b]; //полю М присваевается массивом размерности 'yu 'a'x'b' } //метод public void Print() //метод ввода массива на экран { for (int i = 0; i < a; i++) //от 0 до строки { for (int j = 0; j < b; j++) //от 0 до столбца { Console.Write(M[i, j] + "\t"); //вывод элемента массива на экран череззнак таблицы } Console.WriteLine(); Console.WriteLine(); } Console.WriteLine(); } //метод public void PrintEl(int x, int y) //mметод ввода элемента массива { if (x > 0 && x <= a && y > 0 && y <= b) //если элемент в диапозоне массива { Console.WriteLine("Элемент [" + x + ";" + y + "] равен " + M[x - 1, y - 1]); //вывод элемента массива на экран } else throw new FormatException(); //возвращаем вид оштбки 'FormatException' } |
21.12.2012, 00:16 | #2 |
Пользователь
Регистрация: 04.04.2012
Сообщений: 20
|
//метод
public bool Treugol() //метод проверяющий является ли матрица верхней треугольной { bool z = true; // догическая переменная для ответа из метода for (int i = 0; i < a; i++) //от 0 .. a for (int j = 0; j < b; j++) //от 0 .. b { if (i > j) //если индекс строчки больше индекса столбца то эл-т массива находится ниже диоганали матрицы if (M[i, j] != 0 && z == true) //если этот эл-т M[i, j]=0 и 'z'=true то 'z'= false z = false; } return z; // ответ из метода переменной 'z' } } class Program { static void Main(string[] args) { try //контролирующий блок оштбок { Console.WriteLine("Введите размерность массива"); Console.Write("Строки "); int a = Convert.ToInt32(Console.ReadLine()) ; //ввод стороки Console.Write("Столбцы "); int b = Convert.ToInt32(Console.ReadLine()) ; //ввод столбца Matrica Matr = new Matrica(a, b); //создпние объектаа с помощью конструктора с параметрами 'a' i 'b' Console.WriteLine("Введите значения елементов массива через enter"); for (int i = 0; i < Matr.a; i++) //от 0.. значение поля 'a' в объект Mart for (int j = 0; j < Matr.B; j++) //от 0.. значение поля 'b' v объект Mart { Matr[i, j] = Convert.ToInt32(Console.ReadLine()) ; //ввод значения эл-та массива } Matr.Print();// выполнение метода Print для объекта Matr if (Matr.Treugol() == true) //если выполнение метода Treugol для объекта Matr выдаёт ответ = true Console.WriteLine("Матрица является верхней треугольной"); else Console.WriteLine("Матрица НЕ является верхней треугольной"); Console.WriteLine(); Console.WriteLine("Введите индексы искомого элемента"); Console.Write("Строки "); int k = Convert.ToInt32(Console.ReadLine()) ; //ввод строки Console.Write("Столбцы "); int l = Convert.ToInt32(Console.ReadLine()) ; //ввод столбца Console.WriteLine(); Matr.PrintEl(k, l); //выполнение метода PrintEl для объекта Matr - то есть вывод эл-та на экран Console.WriteLine(); Matrica Matric = new Matrica();//объект создания с помощью конструктора по умолчанию Console.WriteLine(); Console.WriteLine("Матрица по умолчанию:"); Console.WriteLine(); Matric.Print(); //выполнение метода'Print' для объекта Matric if (Matric.Treugol() == true) //если выполнение метода Treugol для объекта Matric выдаёт ответ = true Console.WriteLine("Матрица является верхней треугольной"); //выввод на экран этого значения else Console.WriteLine("Матрица НЕ является верхней треугольной"); } catch (FormatException) //если вид ошибки - FormatException то вывод следуемого сообщение на экран { Console.WriteLine("ERROR! Выход за границы массива или неверное значение индексов!"); } catch (OverflowException) //если вид ошибки - OverflowException то вывод следуемого сообщение на экран { Console.WriteLine("ERROR! Переполнение по типу переменной!"); } Console.ReadKey(); } } } |
21.12.2012, 00:32 | #3 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
0) Для оформления программного кода используйте тег CODE.
1) Если массив M инициализирован конструкцией new int[5,5], то обращение M[5,5] вызовет исключение. В индексаторе Вы этим пренебрегаете. 2) В методе проверки можно сократить тело цикла до Код:
3) "Исправить" - это задание либо для Вас, либо для человека с миелофоном. Мой, к сожалению, в ремонте. Что не работает? |
21.12.2012, 01:10 | #4 |
Пользователь
Регистрация: 04.04.2012
Сообщений: 20
|
всё работает, но мне надо дописать неопределённый массив с помощью конструктора и чтоб вызывалось с помощью индексатора
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Исправить зaдачку на двумерные массивы... Делфи. | kazzz | Помощь студентам | 0 | 18.05.2011 18:12 |
одномерные массивы (паскаль)(исправить)) | Rfn.if | Помощь студентам | 1 | 28.12.2010 22:50 |
Массивы(исправить программу) | ilyas22 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 26.05.2010 22:35 |
Массивы, частное, остаток(исправить) | Alter | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 24.05.2008 23:37 |