Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
9 / 7 / 2
Регистрация: 26.12.2018
Сообщений: 278

Классы, вектор, конструктор, метод insert

26.09.2019, 21:53. Показов 2046. Ответов 5

Студворк — интернет-сервис помощи студентам
Вечер добрый форумчане, с такой проблемой столкнулся.
Есть класс "вектор" не шаблонный класс,а самостоятельно написанный, так вот когда я создаю объект класса и запуская метод insert(ввод э-ов с клавы) , а потом запускаю метод print, то у меня в поле capacity(выделяемая память) выводятся элементы вектора из insert
ХЕЛП ПЛИЗ)))мб какие-то нормы C# НЕ соблюденены, только недавно начал шарпы изучать, не судите строго) писал на С++
фрагмет кода:
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
 class MyVector
    {
        static private int[] arr = null;
        private int capacity = 0;
        public int length = 0;
       
        public MyVector(int n, int val) // Создает вектор с n объектами со значениями val, c параметрами
        {
            Console.WriteLine("конструктор с параметрами");
            capacity = n;
            length = n;
            arr = new int[capacity];
            for (int i = 0; i < length; i++)
                arr[i] = val;
        }
 
public void insert()
        {
            Console.WriteLine("Введите вектор");
            int length = Convert.ToInt32(Console.ReadLine());
            int[] arr = new int[length];
            if (length >= capacity)
            {
                capacity = length + 1;
                arr = new int[length];
 
            }
            else
            {
                Console.WriteLine("Памяти хватило"); ;
            }
            Console.WriteLine("вектор:" + arr[length-1]);
       }
}
 public void Print()
        {
           
            Console.WriteLine("Память:" + capacity);
            Console.WriteLine("Длина массива:" + length);
            Console.WriteLine("Элементы вектора:");
            for (int i = 0; i < length; i++)
            {
                Console.WriteLine("" + arr[i]);
            }
            Console.WriteLine("///////////////////////////////");
        }
 
  class Program
    {
        static void Main(string[] args)
        {
            MyVector user = new MyVector();
            user.insert(); //ввод вручную
            user.Print();
        }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.09.2019, 21:53
Ответы с готовыми решениями:

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор,метод вывода на экран Display, метод для преобразования в строку toString в Delphi
Здравствуйте программисты!!! Мне в университете задали написать класс, а в этом классе использовать конструктор, метод вывода на экран...

Конструктор классы
В общем. Вот задача. Мне надо, чтобы с помощью конструктора объекту присваивались значения. Вот код, со всеми методами, которыми я пробовал...

5
 Аватар для jester
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
26.09.2019, 22:15
Anton006, ты в инсерте удаляешь старый массив. Кстати инсерт должен вроде как вставлять элементы??
Нормы не соблюденены))
Попробуй для начала отделить этот класс от консоли

Добавлено через 2 минуты
Anton006, или не удаляешь
C#
1
2
3
4
5
6
7
int[] arr = new int[length];
            if (length >= capacity)
            {
                capacity = length + 1;
                arr = new int[length];
 
            }
Оно обращается к локальному массиву?
0
9 / 7 / 2
Регистрация: 26.12.2018
Сообщений: 278
26.09.2019, 22:23  [ТС]
да, вот получается , что обращение идет к локальному массиву , я не могу понять почему, а вывод вообще через капасити идет...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void insert()
    {
        cout << " Enter arr: ";
        cin >> arr[length];
        if (length >= capacity)
        {
            capacity = length + 1;
            delete[] arr;
            arr = new int[length];
        
        }
        else
        {
            cout << "все ок, памяти хватило" << endl;
        }
            cout <<"вектор" << arr[length] << endl;
    }
вот как это в плюсах выглядит, мб знаешь их
0
 Аватар для jester
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
26.09.2019, 22:43
Лучший ответ Сообщение было отмечено Anton006 как решение

Решение

Anton006, знаю. Думаю тут тоже неправильно.
Снова
Цитата Сообщение от jester Посмотреть сообщение
Кстати инсерт должен вроде как вставлять элементы??


Цитата Сообщение от Anton006 Посмотреть сообщение
C++
1
2
3
cout << " Enter arr: ";
* * * * cin >> arr[length];
* * * * if (length >= capacity)
если length будет равно количеству вмещаемых элементов, то будет ошибка

Что ты пытаешься сделать?
Расширить массив?
Тогда тебе нужно создать новый массив нужного размера и переписать туда старые элементы, а поменять старый массив на новый

Есть Array.Resize посмотри
1
9 / 7 / 2
Регистрация: 26.12.2018
Сообщений: 278
26.09.2019, 22:47  [ТС]
да, вставка, назвал ввод просто)
окей, гляну)
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
27.09.2019, 01:12
Anton006, т.е. ни понимания в принципе, ни знания/понимания терминологии в частности...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2019, 01:12
Помогаю со студенческими работами здесь

Классы и конструктор
Мне нужно реализовать: конструктор, который в качестве параметра принимает текстовый файл. Этот конструктор находится в классе, в этом же...

Классы! Конструктор!
Я так понимаю так с конструктором не сработает? тогда как мне занести значения класса икс и класса игрек в класс треугольник class X{ ...

Классы, конструктор копирования
Здравствуйте! вот код: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iomanip.h&gt; class matrix { ...

Классы: конструктор копий
Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка Есть некоторые наброски , посмотрите...

Классы. конструктор копирования
Добрый вечер кодеры ;D Можете помоч с прогой?!.. Надо дописать конструктор копирования. Вроде как описал (не уверен что правильно) и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru