Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196

Индексатор ограничивающий диапазон от -20 до 20

24.10.2019, 21:46. Показов 3243. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать индексатор ограничивающий диапазон от -20 до 20 в одномерном массиве целых числе?
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
class DemoArray
    {
        private int[] intArray;
        private int n;
        public DemoArray(int N)
        {
            n = N;
            intArray = new int[n];
        }
        /*public int this[int i]
        {
            get
            {
                if (i < -20 || i > 20)
                {
                    Console.WriteLine("Индекс вне диапазона");
                    return 0;
                }
                else
                {
                    return intArray[i];
                }
            }
        } */
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2019, 21:46
Ответы с готовыми решениями:

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

Минифильтр, ограничивающий права доступа
Добрый день! Требуется написать минифильтр, ограничивающий права доступа к определённым файлам (например, чтобы заданный файл нельзя было...

Родительский контроль, ограничивающий работу определенных приложений
Задумал написать для себя программу по типу Родительского контроля, ограничивающую работу конкретных приложений например по часу... и сразу...

29
 Аватар для Enifan
1851 / 1198 / 502
Регистрация: 14.10.2018
Сообщений: 3,304
31.10.2019, 19:52
Студворк — интернет-сервис помощи студентам
Saulq, если честно, ваш код вообще не компилируется, как минимум 3 ошибки выдает на стадии компиляции.

Добавлено через 2 минуты
Saulq, например на 8-ой строчке стоит ; (точка с запятой), что ведет к ошибкам
на 123 строчке обращение к переменной scalar которой в принципе не существует
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
31.10.2019, 20:56  [ТС]
Насколько я понял проблема в конструкторе, но как изменить его?

Добавлено через 3 минуты
Enifan, Странно, название метода не скопировалось, а на счет 8-ой строки не понял
Вот новый код:
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
152
153
154
155
156
using System;
 
namespace Class_Array
{
    class DemoArray
    {
        private int[] intArray;
        private int n;
        public int scalar
        {
            set
            {
                for (int i = 0; i < intArray.Length; i++)
                {
                    intArray[i] *= value;
                }
            }
        }
        public DemoArray(int N)
        {
            n = N;
            intArray = new int[n];
        }
        public DemoArray(DemoArray r)
        {
            n = r.n;
            intArray = new int[r.n];
            for (int i = 0; i < intArray.Length; i++)
            {
                intArray[i] = r[i];
            }
        }
        public int this[int i]
        {
            get
            {
                return intArray[i];
            }
            set 
            {
                if (value < -20 || value > 20)
                {
                    Console.WriteLine("Индекс вне диапазона");
                }
                intArray[i] = value;
            }
        } 
        public void ReadArray()
        {
            Console.WriteLine("Введите элементы: ");
            for (int i = 0; i < intArray.Length; i++)
            {
                Console.Write("Элемент[{0}] = ", i);
                intArray[i] = Convert.ToInt32(Console.ReadLine());
            }
        }
        public void PrintArray()
        {
            for (int i = 0; i < intArray.Length; i++)
            {
                Console.Write("{0}; ", intArray[i]);
            }
            Console.WriteLine();
        }
        public void Sorting()
        {
            for (int j = 0; j < intArray.Length; j++)
            {
                for (int i = 0; i < intArray.Length - 1; i++)
                {
                    if (intArray[i] < intArray[i + 1])
                    {
                        int tmp = intArray[i];
                        intArray[i] = intArray[i + 1];
                        intArray[i + 1] = tmp;
                    }
                }
            }
        }
 
        //Перегрузка операций
        public static DemoArray operator ++(DemoArray x)
        {
            DemoArray tmp = new DemoArray(x.n);
            for (int i = 0; i < x.n; i++)
            {
                tmp[i] = x[i] + 1;
            }
            return tmp;
        }
        public static DemoArray operator --(DemoArray x)
        {
            DemoArray tmp = new DemoArray(x.n);
            for (int i = 0; i < x.n; i++)
            {
                tmp[i] = x[i] - 1;
            }
            return tmp;
        }
        public static DemoArray operator +(DemoArray x, DemoArray y)
        {
            if (x.n == y.n)
            {
                DemoArray summa = new DemoArray(x.n);
                for (int i = 0; i < x.n; i++)
                {
                    summa.intArray[i] = x.intArray[i] + y.intArray[i];
                }
                return summa;
            }
            else
            {
                return null;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите размерность массива: ");
            int n = Convert.ToInt32(Console.ReadLine());
            DemoArray Arr = new DemoArray(n);
            Arr.ReadArray();
            Console.WriteLine();
            Console.Write("Вывод элементов: ");
            Arr.PrintArray();
            Console.WriteLine();
 
            Console.Write("Элементы в порядке убывания: ");
            DemoArray Sort = new DemoArray(Arr);
            Sort.Sorting();
            Sort.PrintArray();
 
            DemoArray Scalar = new DemoArray(Arr);
            Console.Write("Вывод элементов умноженых на три: ");
            Scalar.scalar = 3;
            Scalar.PrintArray();
            Console.WriteLine();
 
            DemoArray Inc = new DemoArray(Arr);
            Console.Write("Инкремент: ");
            DemoArray Arr1 = ++Inc; 
            Arr1.PrintArray();
 
            DemoArray Dis = new DemoArray(Arr);
            Console.Write("Дискримент: ");
            DemoArray Arr2 = --Dis;
            Arr2.PrintArray();
 
            Console.Write("Cумма: ");
            DemoArray Arr3 = Arr1 + Arr2;
            Arr3.PrintArray();
        }
    }
}
Добавлено через 1 минуту
scalar это свойство с 9 строки

Добавлено через 22 секунды
И кстати, у меня все запускается
0
 Аватар для Enifan
1851 / 1198 / 502
Регистрация: 14.10.2018
Сообщений: 3,304
31.10.2019, 21:06
Saulq, когда добавилось свойство scalar - сразу все ошибки убрались, вместе с 8-ой строчкой. По поводу того, что не срабатывает сообщение об ошибке - все просто. Если бы вы обращались к объекту класса через перегруженный оператор скобки - то сообщение появилось бы.
C#
1
Arr[i];
Но вы обращаетесь напрямую к массиву, что находится внутри объекта класса. Перегрузка будет действовать когда вы обращаетесь к объекту классу через индекс, но не когда вы обращаетесь к массиву (даже если это массив данного объекта).
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
31.10.2019, 21:14  [ТС]
Enifan, Ничего не понял, что в коде изменить надо?
0
 Аватар для Enifan
1851 / 1198 / 502
Регистрация: 14.10.2018
Сообщений: 3,304
31.10.2019, 21:24
Saulq, как то так, и ваши перегруженные скобки работают. По комментария определите что добавилось, что удалилось
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
using System;
 
namespace Class_Array
{
    class DemoArray
    {
        private int[] intArray;
        public int Length { get; private set; } // добавлено
        private int n;
        public int scalar
        {
            set
            {
                for (int i = 0; i < intArray.Length; i++)
                {
                    intArray[i] *= value;
                }
            }
        }
        public DemoArray(int N)
        {
            n = N;
            intArray = new int[n];
            Length = N; // добавлено
        }
        public DemoArray(DemoArray r)
        {
            n = r.n;
            intArray = new int[r.n];
            for (int i = 0; i < intArray.Length; i++)
            {
                intArray[i] = r[i];
            }
            Length = r.Length; // добавлено
        }
        public int this[int i]
        {
            get
            {
                return intArray[i];
            }
            set
            {
                if (value < -20 || value > 20)
                {
                    Console.WriteLine("Индекс вне диапазона");
                }
                intArray[i] = value;
            }
        }
        // Не нужно
        //public void ReadArray()
        //{
        //    Console.WriteLine("Введите элементы: ");
        //    for (int i = 0; i < intArray.Length; i++)
        //    {
        //        Console.Write("Элемент[{0}] = ", i);
        //        intArray[i] = Convert.ToInt32(Console.ReadLine());
        //    }
        //}
        public void PrintArray()
        {
            for (int i = 0; i < intArray.Length; i++)
            {
                Console.Write("{0}; ", intArray[i]);
            }
            Console.WriteLine();
        }
        public void Sorting()
        {
            for (int j = 0; j < intArray.Length; j++)
            {
                for (int i = 0; i < intArray.Length - 1; i++)
                {
                    if (intArray[i] < intArray[i + 1])
                    {
                        int tmp = intArray[i];
                        intArray[i] = intArray[i + 1];
                        intArray[i + 1] = tmp;
                    }
                }
            }
        }
 
        //Перегрузка операций
        public static DemoArray operator ++(DemoArray x)
        {
            DemoArray tmp = new DemoArray(x.n);
            for (int i = 0; i < x.n; i++)
            {
                tmp[i] = x[i] + 1;
            }
            return tmp;
        }
        public static DemoArray operator --(DemoArray x)
        {
            DemoArray tmp = new DemoArray(x.n);
            for (int i = 0; i < x.n; i++)
            {
                tmp[i] = x[i] - 1;
            }
            return tmp;
        }
        public static DemoArray operator +(DemoArray x, DemoArray y)
        {
            if (x.n == y.n)
            {
                DemoArray summa = new DemoArray(x.n);
                for (int i = 0; i < x.n; i++)
                {
                    summa.intArray[i] = x.intArray[i] + y.intArray[i];
                }
                return summa;
            }
            else
            {
                return null;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите размерность массива: ");
            int n = Convert.ToInt32(Console.ReadLine());
            DemoArray Arr = new DemoArray(n);
            //Arr.ReadArray(); не нужно
 
            Console.WriteLine("Введите элементы: ");   // добавлено
            for (int i = 0; i < Arr.Length; i++)       // добавлено
            {   // добавлено
                Console.Write("Элемент[{0}] = ", i);   // добавлено
                Arr[i] = Convert.ToInt32(Console.ReadLine());   // добавлено
            }   // добавлено
 
            Console.WriteLine();
            Console.Write("Вывод элементов: ");
            Arr.PrintArray();
            Console.WriteLine();
 
            Console.Write("Элементы в порядке убывания: ");
            DemoArray Sort = new DemoArray(Arr);
            Sort.Sorting();
            Sort.PrintArray();
 
            DemoArray Scalar = new DemoArray(Arr);
            Console.Write("Вывод элементов умноженых на три: ");
            Scalar.scalar = 3;
            Scalar.PrintArray();
            Console.WriteLine();
 
            DemoArray Inc = new DemoArray(Arr);
            Console.Write("Инкремент: ");
            DemoArray Arr1 = ++Inc;
            Arr1.PrintArray();
 
            DemoArray Dis = new DemoArray(Arr);
            Console.Write("Дискримент: ");
            DemoArray Arr2 = --Dis;
            Arr2.PrintArray();
 
            Console.Write("Cумма: ");
            DemoArray Arr3 = Arr1 + Arr2;
            Arr3.PrintArray();
        }
    }
}
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
31.10.2019, 21:32  [ТС]
Enifan, данное решение не соответствует моему заданию, а именно второму пункту.
Создать класс для работы с одномерным массивом:
Поля: массив целых чисел; целое число n - размерность массива
Методы:
1) конструктор позволяющий создать массив размерностью N;
2) ввод элементов массива с клавиатуры;
3) вывод элементов массива на экран;
3) сортировка элементов массива в порядке убывания;
4) свойство доступное только для записи: умножение всех элементов массива на скаляр
5) индексатор ограничивающий диапазон от -20 до 20
0
 Аватар для Enifan
1851 / 1198 / 502
Регистрация: 14.10.2018
Сообщений: 3,304
31.10.2019, 21:44
Saulq, 130-135 строчка, ввод происходит с клавиатуры, элементы добавляются в массив (который находится в объекте Arr)
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
31.10.2019, 21:46  [ТС]
Enifan, Все верно, но вы не учли одного: это должен был быть метод
0
 Аватар для Enifan
1851 / 1198 / 502
Регистрация: 14.10.2018
Сообщений: 3,304
31.10.2019, 21:54
Saulq, сделаем. В том коде, где вы скидывали в последний раз, изменить одно слово в 54 строке
C#
1
this[i] = Convert.ToInt32(Console.ReadLine());
1
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
31.10.2019, 22:14  [ТС]
Enifan, Все работает, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2019, 22:14

Обработать выделенный диапазон ячеек, результат записать в смежный диапазон
Напишите в среде Excel макрос, который в выделенном диапазоне ячеек должен выполнять заданные действия и записывать результат в смежную с...

Найти диапазон который соответствует дате и данный диапазон имеет более старшую дату
Добрый день! Подскажите как лучше решить данную задачу - Задача - найти диапазон который соответствует дате(искомого значения) и...

Диапазон чисел - какой диапазон у каждой переменной
все int, можете написать какой диапазон у каждой переменной типа а1= a1 = rand()%7; b1 = rand()%6+4; a2 = rand()%7; b2 =...

Вставить диапазон с 1-го листа на 2-ой и удалить диапазон
Добрый день, всем. Посоветуйте каким образом сделать своеобразную кнопку отмены после вставки диапазона данных. на листе...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru