0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 58
1

Работа с классами. Добавление элемента в конец массива

09.12.2020, 16:33. Показов 436. Ответов 3

Author24 — интернет-сервис помощи студентам
Здраствуйте! Возникла проблема с программой. Дано задание: Напишите программу, в которой есть класс с полем, являющийся ссылкой на целочисленный массив. У класса есть конструктор с одним целочисленным аргументом, определяющий размер массива. Нужно перегрузить бинарный оператор "+" так чтобы можно было складывать объект с числом. Число которое прибавляется к объекту добавляется в конец массива.
Мой код:
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
 class Myclass
    {
        public int num;
        public int[] number;
        public Myclass(int n)
        {
            num = n;
            number = new int[num];
 
        }
 
        public static string operator ~(Myclass a)
        {
            string text = "";
            
            for (int i = 0; i < a.number.Length; i++)
            {
                text += a.number[i] + " ";
            }
            return text;
        }
 
        //public static Myclass operator ++(Myclass a)
        //{
        //    a.num++;
        //    return new Myclass(a.num);
        //}
 
        //public static Myclass operator --(Myclass a)
        //{
        //    a.num--;
        //    return new Myclass(a.num);
        //}
 
        public static Myclass operator +(Myclass a, int n)
        {
            
 
            int[] newnum = new int[a.number.Length + 1];
            newnum[a.number.Length - 1] = n;
            for(int i = 0; i < newnum.Length - 1; i++)
            {
                newnum[i] = a.number[i];
 
            }
            a.number = newnum;
            return new Myclass(a.num);
        }
    }
    class Program
    {
        
 
        static void Main(string[] args)
        {
            Myclass A = new Myclass(5);
 
            Console.Write("Массив: {0}", ~A);
            Console.WriteLine();
            Myclass D = A + 2;
            Console.Write(~D);
            
            //int[] number = { 1, 3, 6, 7, 8, 9 };
            //int[] newnumber = new int[number.Length + 1];
            //for (int i = 0; i < number.Length; i++)
            //{
            //    Console.Write(number[i] + " ");
            //}
            //int index = 0;
            //newnumber[number.Length - 1] = 0;
 
 
            //for (int i = 0; i < newnumber.Length - 1; i++)
            //{
            //    newnumber[i] = number[i];
            //}
            //number = newnumber;
            //Console.WriteLine();
            //for (int i = index; i < number.Length; i++)
            //{
            //    Console.Write(number[i] + " ");
            //}
            Console.ReadKey();
        }
    }
Результатом выводит:
Массив: 0 0 0 0 0
0 0 0 0 0 // тут должен выводится массив с добавленным элементом в конец

Проблема заключается в том что число которое я складываю с объектом не добавляется в конец массива. Пробовал просто создавать массив в главном методе и добавлять элемент в конец массива, все работало. А вот с объектом класса не выходит. Я просто не понимаю как это реализовать. Подскажите пожалуйста. При помощи оператора ~ и имени объекта я вывожу сам массив(Точнее строку, в которую я добавляю элементы массива). А вот в перегрузке оператора + я не понимаю что именно нужно возвращать и как получить массив с добавленным в конец числом. Возможно я изначально что-то делаю не так...
Я думал что это связано как- то с тем, что я не заполняю массив, но насколько я знаю, когда массив создаешь пустой(он автоматом нулями заполняется). Я пробовал напрямую его нулями, числами заполнить, но это не работало.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2020, 16:33
Ответы с готовыми решениями:

Добавление элемента в конец массива
Собственно как это сделать, если размер массива заранее не изветен? :)

Добавление элемента в конец массива
Добрый вечер! Сделала согласно мануалу, а н-нет - не работает. $students = array();...

Добавление элемента в конец массива
В общем есть такая прога. using System; using System.Collections; using...

Добавление элемента в конец динамического массива
Не понимаю почему у меня не выходит данный код (еще только учусь) void pushBack(int* arr, int*...

3
958 / 576 / 268
Регистрация: 20.12.2016
Сообщений: 1,506
09.12.2020, 18:06 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public static Myclass operator +(Myclass a, int n)
{
    var newLen = a.num + 1;
    var result = new Myclass(newLen);
    int[] newnum = new int[newLen];
    newnum[a.num] = n;
    for (int i = 0; i < a.num; i++)
    {
        newnum[i] = a.number[i];
    }
    result.number = newnum;
    return result;
}
1
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
09.12.2020, 18:07 3
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
    class Program
    {
        static void Main()
        {
            var s = new MyClass(5);
            var rnd = new Random();
            for(var i = 0; i < 10; i++)
            {
                s += rnd.Next(0, 100);
                Console.WriteLine(s);
            }
 
            Console.ReadLine();
        }
    }
 
    class MyClass
    {
        private int[] nums;
 
        public MyClass(int n)
        {
            nums = new int[n];
        }
        public static MyClass operator + (MyClass a, int n)
        {
            var currentLen = a.nums.Length;
 
            Array.Resize(ref a.nums, currentLen + 1);
 
            a.nums[currentLen] = n;
 
            return a;
        }
 
        public override string ToString()
        {
            return string.Join(",", nums);
        }
    }
при каждом сложении изменение размера внутреннего массива такое себе, но раз нужен именно массив...
1
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 58
09.12.2020, 18:21  [ТС] 4
Спасибо всем огромное!!!
0
09.12.2020, 18:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2020, 18:21
Помогаю со студенческими работами здесь

Добавление элемента в конец динамического массива!
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;malloc.h&gt; using namespace std; int main()...

Добавление нового указателя в конец массива указателей, удаление указанного элемента, добавление указателей
Здравствуйте. Помогите, пожалуйста, разобраться с одним большим заданием. Задание пока в процессе...

Добавление элемента в конец
Добрый вечер. Есть контейнер: &lt;div id='main_content'&gt; // дочерние элементы &lt;/div&gt; Как...

Добавление элемента в конец списка
type ТЭ=...(тип элемента списка) список=^звено; звено:record элем:ТЭ; след:список; end;...

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

Добавление элемента в конец списка
procedure AddLast(value: string); {Dobavlenie elementa v konec spiska} var Item: PList; begin...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru