С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
5 / 5 / 5
Регистрация: 23.05.2013
Сообщений: 62
1

Задание произвольной размерности массива при создании объекта

13.12.2013, 03:17. Показов 3170. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создайте проект, в котором опишите класс для решения
задачи. Каждый разрабатываемый класс должен содержать следующие элементы:скрытые и открытые поля, конструкторы с параметрами и без параметров, методы, свойства, индексаторы.


Класс должен реализовывать следующие операции над массивами:
- задание произвольной размерности массива при создании объекта;
- доступ к элементу по индексам с контролем выхода за пределы массива;
- вывод на экран элемента массива по заданному индексу и всего массива.
При возникновении ошибок должны выбрасываться исключения.
В программе должна выполняться проверка всех разработанных
элементов класса.

ЗАДАЧА:
Описать класс для работы с одномерным массивом целых чисел.
Предусмотреть возможность поиска элемента в массиве по заданному значению.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2013, 03:17
Ответы с готовыми решениями:

Заполнение массива при создании объекта
Возник вопрос, как заполнить массив при создании объекта? подскажите пожалуйста :) namespace...

Работа с матрицами произвольной размерности. Создать функцию, которая для произвольной матрицы вычисляет:
а) максимальную сумму по столбцам б) количество минимальных элементов массива Распишите...

Работа с матрицами произвольной размерности. Создать функцию, которая для произвольной матрицы вычисляет
а) номер столбца, в котором расположен максимальный элемент б) сумму минимальных элементов в...

Работа с матрицами произвольной размерности. Создать функцию, которая для произвольной матрицы вычисляет
a)количество столбцов, содержащих данный элемент b) и еще что бы что нибудь считала, не важно но...

4
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
13.12.2013, 05:57 2
Задание простое, возьми исходники List и скопируй
0
5 / 5 / 5
Регистрация: 23.05.2013
Сообщений: 62
14.12.2013, 01:27  [ТС] 3
Задача то легкая, но надо реализовать все условия с конструкторами, свойствами и методами и прочее..
Где эти исходники можно найти?
0
16 / 16 / 5
Регистрация: 18.05.2012
Сообщений: 39
16.12.2013, 00:30 4
Вот написала класс. Мои замечания к своему коду: Класс массивов не должен иметь в основании массив. Методы для итераторов (start(), isfinished(), getElem()) не используются нигде. Код в стиле С++.

Буду рада критике. Как реализовать на основании указателя на массив?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System;
 
class Array
{
    private int _size;
    private int[] _arr;
    private int _firstElem;
    private int _currentElem;
    private int _endElem;
 
 
    public class BadArray
    {
        private string _reason;
        private int _index;
 
        public BadArray (string reason="", int index=0)
        {
            _reason = reason;
            _index = index;
            Console.WriteLine(getReason() + " - index " + _index);
        }
        public string getReason()
        {
            return _reason;
        }
    }
 
    //создать пустую последовательность (конструктор без параметров)
    public Array()
    {
        _size = 0;
        _arr = new int[_size];
    }
 
    ~Array() { }
 
    //конструктор с параметрами
    public Array (int arrayLength)
    {
        _size = arrayLength;
        _arr = new int[arrayLength];
        for (int i = 0; i < arrayLength; i++)
            _arr[i] = new int();
        
        _firstElem = _arr[0];
        _currentElem = _firstElem;
        _endElem = _arr [arrayLength - 1];
    }
 
    //копировательный конструктор
    public Array (Array arr) 
    {
        _size = arr._size;
        _arr = arr._arr;
        _firstElem = arr._firstElem;
        _currentElem = arr._currentElem;
        _endElem = arr._endElem;
    }
 
    //доступ к элементу по индексу
    public int getElemByIndex (int index) 
    {
        if (index < 0 || index >= _size)
            new BadArray("Bad index ", index);
        return _arr[index];
    }
 
    //модификатор элемента
    public void setElemByIndex(int index, int value)
    {
        if (index < 0 || index >= _size)
            new BadArray("Bad index ", index);
        _arr[index] = value;
    }
 
 
    //длина масива
    public int length()
    {
        return _size;
    }
 
    //iterators
    public void start()
    {
        _currentElem = _firstElem;
    }
 
    public bool isfinished()
    {
        return _currentElem == _endElem;
    }
 
    public int getElem()
    {
        return _currentElem;
    }
 
}
class Program
{
    static void Main(string[] args)
    {
        try
        {
            Console.WriteLine("1. Constructor without parametrs. Empty array.");
            Array ar0 = new Array();
            show(ar0);
 
            Console.WriteLine("2. Constructor with one parametr - length of array.");
            int length = 10;
            Array ar1 = new Array(length);
            show(ar1);
 
            Console.WriteLine("3. Modificator. Let's fill this array. ");
            for (int i = 0; i < length; i++)
            {
                ar1.setElemByIndex(i, i);
            }
            show(ar1);
 
            Console.WriteLine("4. Copy constructor.");
            Array ar2 = new Array (ar1);
            show(ar2);
 
            Console.WriteLine("5. Selector. Let's get some element. ");
            Console.WriteLine(ar1.getElemByIndex(4));
 
            Console.WriteLine("6. BadArray Class testing. ");
            ar2.getElemByIndex(ar2.length() + 1);
        }
 
        catch (IndexOutOfRangeException)
        {
            Console.WriteLine("Attempted of getting not a member of the array");
        }
       
    }
 
    static void show(Array arr)
    {
        int length = arr.length();
        Console.Write("Array: ");
        for (int i = 0; i < length; i++)
        {
            Console.Write(arr.getElemByIndex(i) + " ");
        }
        Console.WriteLine();
    }
}
0
5 / 5 / 5
Регистрация: 23.05.2013
Сообщений: 62
28.12.2013, 07:51  [ТС] 5
Вот, часть сделано, но надо все функции переделать в методы и сделать метод нахождения элемента по индексу



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
 
namespace Lab4V10
{
 
    class Program
    {
 
        static void Main()
        {
            IntArray ia = new IntArray(10);
 
            Console.WriteLine("Введите размерность массива (по умолчанию 10): ");
            ia.Length = int.Parse(Console.ReadLine());
 
            Console.WriteLine("Введите элементы массива: ");
 
            for (int i = 0; i < ia.Length; i++)
                ia[i] = int.Parse(Console.ReadLine());
 
            Console.WriteLine("\nМассив: ");
 
            ia.PrintAll();
 
            Console.WriteLine("Введите значения элемента для поиска в массиве: ");
 
            ia.Search(int.Parse(Console.ReadLine()));
 
            Console.ReadLine();
        }
 
        public class IntArray
        {
 
            int[] array;                            // массив 
            int length;                             // размерность 
 
            public int Length
            {                       // свойство - размерность
                get { return length; }
                set
                {
                    length = value;
                    array = new int[value];
                }
            }
 
            public int this[int i]
            {               // индексатор 
                get
                {
                    if (i >= 0 && i < length)
                        return array[i];
                    throw new IndexOutOfRangeException("Выход за границы массива. В массиве всего " + Length + " элементов.");
                }
                set
                {
                    if (i >= 0 && i < length)
                        array[i] = value;
                    else
                        throw new IndexOutOfRangeException("Выход за границы массива. В массиве всего " + Length + " элементов.");
                }
            }
 
            public IntArray() { }                   // конструктор класса без параметров
 
            public IntArray(int size)
            {               // конструктор класса  
                array = new int[size];
                length = size;
            }
 
            public void Search(int n)
            {               // Функция поиска
                for (int i = 0; i < Length; i++)
                    if (this[i] == n)
                    {
                        Console.WriteLine("Элемент " + n + " есть в массиве. Индекс элемента: " + i);
                        return;
                    } 
                Console.WriteLine("Элемента " + n + " нет в массиве.");
            }
 
 
 
 
 
            public void PrintAll()
            {               // Функция вывода всего массива
                for (int i = 0; i < Length; i++)
                    Console.Write(this[i] + " ");
                Console.WriteLine("\n");
            }
        }
    }
}
Добавлено через 1 час 50 минут
Все сделано осталось из функций как-то сделать методы


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
 
namespace Lab4V10
{
 
    class Program
    {
 
        static void Main()
        {
            IntArray ia = new IntArray(10);
 
            Console.WriteLine("Введите размерность массива (по умолчанию 10): ");
            ia.Length = int.Parse(Console.ReadLine());
 
            Console.WriteLine("Введите элементы массива: ");
 
            for (int i = 0; i < ia.Length; i++)
                ia[i] = int.Parse(Console.ReadLine());
 
            Console.WriteLine("\nМассив: ");
 
            ia.PrintAll();
 
            Console.WriteLine("Введите значения элемента для поиска в массиве: ");
 
            ia.Search(int.Parse(Console.ReadLine()));
 
            Console.ReadLine();
 
 
            Console.WriteLine("Введите индекс для нахождения эллемента: ");
 
            ia.Search2(int.Parse(Console.ReadLine()));
 
            Console.ReadLine();
 
        }
 
        public class IntArray
        {
 
            int[] array;                            // массив 
            int length;                             // размерность 
 
            public int Length
            {                       // свойство - размерность
                get { return length; }
                set
                {
                    length = value;
                    array = new int[value];
                }
            }
 
            public int this[int i]
            {               // индексатор 
                get
                {
                    if (i >= 0 && i < length)
                        return array[i];
                    throw new IndexOutOfRangeException("Выход за границы массива. В массиве всего " + Length + " элементов.");
                }
                set
                {
                    if (i >= 0 && i < length)
                        array[i] = value;
                    else
                        throw new IndexOutOfRangeException("Выход за границы массива. В массиве всего " + Length + " элементов.");
                }
            }
 
            public IntArray() { }                   // конструктор класса без параметров
 
            public IntArray(int size)
            {               // конструктор класса  
                array = new int[size];
                length = size;
            }
 
            public void Search(int n)
            {               // Функция поиска
                for (int i = 0; i < Length; i++)
                    if (this[i] == n)
                    {
                        Console.WriteLine("Элемент " + n + " есть в массиве. Индекс элемента: " + i);
                        return;
                    } 
                Console.WriteLine("Элемента " + n + " нет в массиве.");
            }
            public void Search2(int n)
            {
                for (int i = 0; i < Length; i++)
                    if ( i == n)
                    {
                        Console.WriteLine("Элемент " + n + " есть в массиве. Число: " + this[i]);
                        return;
 
                    }
                Console.WriteLine("Элемента " + n + " нет в массиве.");
 
            }
 
            public void PrintAll()
            {               // Функция вывода всего массива
                for (int i = 0; i < Length; i++)
                    Console.Write(this[i] + " ");
                Console.WriteLine("\n");
            }
        }
    }
}
0
28.12.2013, 07:51
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2013, 07:51
Помогаю со студенческими работами здесь

В матрице произвольной размерности найти количество максимальных элементов массива
В матрице произвольной размерности находим количество максимальных элементов массива.

Написать программу, реализующую вычисление количества элементов массива А произвольной размерности
Написать программу реализующую вычисление количества элементов массива А произвольной размерности,...

В экземпляре объекта не задана ссылка на объект при динамическом создании объекта
Выдается ошибка NullReferenceException в private void button2_Click(object sender,...

Ввести двумерный массив произвольной размерности и получить из него два одномерных массива по правилу
2.Ввести двумерный массив произвольной размерности, получить из него два одномерных массива: один...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru