Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 89

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)

24.10.2019, 07:31. Показов 8015. Ответов 11

Студворк — интернет-сервис помощи студентам
Текст задачи
Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный целочисленный массив. У класса есть конструктор с одним целочисленным аргументом, определяющим размер массив. При создании объекта все элементы массива, получают нулевые значения. В классе перегружаются следующие операторы. Унарный оператор ~ перегружен таким образом, что результатом возвращается текстовая строка со значениями элементов массива(на который ссылается поле объекта, к которому применяется оператор). Унарный оператор инкремента ++ перегружен так, что его применение к объекту приводит к добавлению в массив нового элемента с нулевым значением. Результатом возвращается ссылка на объект-операнда. При применении к объекту оператор декремента -- из массива удаляется один элемент(например, последний), а результатом возвращается ссылка на объект-операнд.
Бинарный оператор сложения должен быть определен так, чтобы можно было вычислить сумму 2 объектов, объекта и числа, а также числа и объекта. Во всех случаях результатом возвращается новый объект. Если в операции участвуют два объекта-операнда, то в объекте-результате массив получается добавлением нового элемента к массиву из объекта-операнда. Значение добавляемого элемента определяется значением числа-операнда. Если к числу прибавляется объект, то новый элемент добавляется в начало массива. Если к объекту прибавляет число, то новый элемент добавляется в конец массива.

По порядку:
1) а результатом возвращается ссылка на объект-операнд. Как это?
я написал так, но кажется по условию возвращать должно что-то другое:
C#
1
2
3
4
5
6
7
8
9
10
11
public static string operator ~(MyClass obj)
    {
        string stringOfMassive="";
 
        foreach (int elem in obj.massive)
        {
            stringOfMassive += elem + " ";
        }
 
        return stringOfMassive;
    }
2)Бинарный оператор сложения должен быть определен так, чтобы можно было вычислить сумму 2 объектов, объекта и числа, а также числа и объекта.
Какие объекты? Что с чем тут складывать массив с числом? Массив с массивом? Как сложить массив с одним числом?
Или тут имеется в виду типа своеобразная конкатенация для массивов?

3)Если в операции участвуют два объекта-операнда, то в объекте-результате массив получается добавлением нового элемента к массиву из объекта-операнда. Тут складываются массивы? И в результирующий массив добавляется элемент из-какого-то массива-операнда?

Добавлено через 1 час 46 минут
Привёл не тот фрагмент кода в вопросе,
вот тот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public static MyClass operator ++(MyClass obj)
    {
        MyClass obj1 = new MyClass(obj.massive.Length + 1);
 
        for (int count = 0; count < obj.massive.Length; count++)
        {
            obj1.massive[count] = obj.massive[count];
        }
        obj1.massive[obj1.massive.Length - 1] = 0;
        obj = obj1;
        obj1 = null;
        return obj;
    }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.10.2019, 07:31
Ответы с готовыми решениями:

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому полю присваивается при создании объекта...

Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код)
Напишите программу,которая позволяет пользователю ввести 6 цифр,а затем выводит результат типа long на экране.Каждая цифра должна...

Прата, задача 2, глава 6
Доброго времени суток. Учу программирования по книжке Прата. И вот такая задача: &quot;Напишите программу, которая считывает до десяти...

11
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
24.10.2019, 14:48
Лучший ответ Сообщение было отмечено Шрайн как решение

Решение

Шрайн, начнем по порядку
Цитата Сообщение от Шрайн Посмотреть сообщение
1) а результатом возвращается ссылка на объект-операнд.
Если проще - возвращаем this. НО так как мы находимся в статик-методе (this запрещен в статиках), то возвращаем ссылку на этот объект.
Цитата Сообщение от Шрайн Посмотреть сообщение
2)Бинарный оператор сложения должен быть определен так, чтобы можно было вычислить сумму 2 объектов, объекта и числа, а также числа и объекта.
Вы складываете объекты (ob1 + ob2), само собой компилятор скажет вам что это ерудна и выдаст ошибку, НО мы же перегружаем эти методы, а после перегрузки ЛОГИКА будет та, что задали вы сами. При сложении 2-ух объектов может:
1) складывать значения массивов этих 2-ух объектов
2) складываться какая то определенная переменная 1-го объекта с переменной 2-го объекта
3) происходить вычитание. переменная 1-го объекта вычитается значение переменной 2-го объекта и записывается в переменную 1-го объекта (казалось бы глупость, но это возможно).
4) или данные будут умножаться (каждое четное значение 1-го массива будет умножаться на случайный элемент 2-го массива)
Короче, вы просто начинаете издеваться над объектом так, как вам захочется. Любая фантазия в действительности
Цитата Сообщение от Шрайн Посмотреть сообщение
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
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
using System;
 
namespace Test
{
    class MyClass
    {
        int[] arr;
        public int number;
 
        public MyClass(int count)
        {
            arr = new int[count];
            FillArray();
            number = 0;
        }
 
        private void FillArray()
        {
            for (int i = 0; i < arr.Length; i++)
                arr[i] = 0;
        }
 
        public void PrintArray()
        {
            for (int i = 0; i < arr.Length; i++)
                Console.Write(arr[i].ToString());
            Console.WriteLine();
        }
 
        public void PrintNumber()
        {
            Console.WriteLine($"Значение number равно {number}");
        }
 
        // Перегрузка декремента
        public static MyClass operator --(MyClass myClass)
        {
            // Сделать проверку на длину базового массива
            int[] arrNew = new int[myClass.arr.Length - 1];
 
            // Переписываем массив, кроме последнего индекса
            for (int i = 0; i < arrNew.Length; i++)
                arrNew[i] = myClass.arr[i];
 
            // Базовый массив теперь указывает на другой массив (тот что создали только что)
            myClass.arr = arrNew;
 
            // Ссылка на объект-операнд
            // Если проще - аналог this (но мы в static методе, this тут нельзя писать)
            return myClass;
        }
 
        // Перегрузка плюса для 2-ух объектов
        public static MyClass operator+(MyClass current, MyClass other)
        {
            current.number += other.number;
            return current;
        }
 
        // Перегрузка плюса для объекта и числа
        public static MyClass operator +(MyClass myClass, int otherNumber)
        {
            myClass.number += otherNumber;
            return myClass;
        }
 
        // Перегрузка плюса для числа и объекта
        //public static MyClass operator +(int otherNumber, MyClass myClass)
        //{
        //    myClass.number += otherNumber;
        //    return myClass;
        //}
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            MyClass myClass = new MyClass(5);
 
            // Результат перегрузки декремента
            myClass.PrintArray();
            myClass--;
            myClass.PrintArray();
 
 
            // Результат перегрузки плюса для 2-ух объектов
            MyClass myClassTwo = new MyClass(1);
            myClass.number = 10;
            myClassTwo.number = 5;
            myClass.PrintNumber();
            // Складывать классы - кто бы мог подумать
            myClass = myClass + myClassTwo;
            myClass.PrintNumber();
 
 
            // Результат перегрузки плюса для объекта и числа
            myClass = myClass + 100;
            myClass.PrintNumber();
 
            // ОШИБКА
            // Нет перегрузки числа и класса (до этого было наоборот)
            //myClass = 999 + myClass;
            //myClass.PrintNumber();
 
            Console.ReadKey();
        }
    }
}
1
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 89
24.10.2019, 15:27  [ТС]
Enifan,
1) То есть код в конце вопроса подходит под описание (возвращаем ссылку на объект)?
2) По перегрузке сложения:
2.1)Сложение объектов, это по сути сложение элементов двух массивов? Если да, то как я понимаю размерность надо задавать одинаковую для массивов.
2.2)Не очень мне всё же понятно как сложить массив с числом.
2.3)Так понимаю, что сложить число с массивом, можно также как и в п.п. 2.3, осталось понять как
3) я не понял его вообще: речь идёт о сложении двух массивов, но при этом непонятно о каком из двух операндов идёт речь и из какого операнда добавить элемент в результирующий массив.
Сложение объектов: То есть мы допустим берём "понравившийся" элемент из первого массива и добавляем его во второй массив и таким образом получаем новый результирующий массив?
Если прибавляем число к массиву, то это тоже самое что добавить его в начало массива как новый элемент, а если наоборот, то в конец?
0
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
24.10.2019, 15:49
Шрайн,
1) Да, просто ссылку на этот самый объект (она же является аргументом в параметрах)
2.1) Сложение объектов - это не сложение массивов. Вы задаете что, что ХОТИТЕ. (хоть складывайте массивы, хоть складывайте переменные, хоть умножайте массивы). Если вздумали сложить массивы - то необязательно одинаковые массивы. Сложите те индексы что есть у обоих объектов, а если есть разница, то просто перепишите значение.
2.2) реализуйте так как хотите
2.3) код что я скидывал - там указано
3) а выбирайте тот операнд и тот массив что хотите и вставляйте куда хотите

Сложение объектов: если такая логика вам нравится - вперед.

Поймите одну вещь. Перегрузка операторов сделана для того, чтобы упрощать часть кода. В зависимости от вашей логики вы можете перегрузить что угодно и как угодно, чтобы сам код был более компактным.

В вашем задании главное не то чтобы сложить число и массив, а чтобы понять как это может быть удобно в некоторых ситуациях
1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
24.10.2019, 16:00
Цитата Сообщение от Enifan Посмотреть сообщение
// Ссылка на объект-операнд
* * * * * * // Если проще - аналог this (но мы в static методе, this тут нельзя писать)
* * * * * * return myClass;
так нелья, нужно всегда возвращать новый объект класса
0
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
24.10.2019, 16:09
КОП, а зачем нам новый? мы же перегруженные методы используем для старого
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
24.10.2019, 16:10
Цитата Сообщение от Enifan Посмотреть сообщение
а зачем нам новый?
иначе постфикс не будет работать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        class Tt
        {
            public int i;
 
            public static Tt operator ++(Tt t)
            {
                //return new Tt(){i = t.i + 1};
                t.i++;
                return t;
            }
 
            public override string ToString()
            {
                return this.i.ToString();
            }
        }
 
        public static void Main(string[] args)
        {
            var t = new Tt();
            Console.WriteLine(t);
            Console.WriteLine(t++);
            Console.WriteLine(++t);
корректный результат 0 0 2, а не 0 1 2
1
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
24.10.2019, 16:28
Шрайн, просто суть в том, что в вашем задании не указывается как именно должен работать алгоритм сложения объекта и числа. Следовательно перегружайте на ваше усмотрение
вот еще примерчик, в котором перегрузка идет на любой вкус, можете выбрать один из предложенных
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
using System;
 
namespace Test
{
    class MyClass
    {
        int[] arr;
        public int number;
 
        public MyClass()
        {
            arr = new int[] { 0, 1, 2, 3, 4};
            number = 0;
        }
 
        public void PrintArray()
        {
            for (int i = 0; i < arr.Length; i++)
                Console.Write(arr[i].ToString() + " ");
            Console.WriteLine();
        }
 
        public void PrintNumber()
        {
            Console.WriteLine($"Значение number равно {number}");
        }
 
        // Перегрузка плюса для объекта и числа
 
        // Увеличивается переменная number
        //public static MyClass operator +(MyClass myClass, int otherNumber)
        //{
        //    myClass.number += otherNumber;
        //    return myClass;
        //}
 
        // Уменьшается переменная number
        //public static MyClass operator +(MyClass myClass, int otherNumber)
        //{
        //    myClass.number -= otherNumber;
        //    return myClass;
        //}
 
        // Умножается переменная number
        //public static MyClass operator +(MyClass myClass, int otherNumber)
        //{
        //    myClass.number *= otherNumber;
        //    return myClass;
        //}
 
        // Массив увеличился на единицу и в конец записалось входное число
        public static MyClass operator +(MyClass myClass, int otherNumber)
        {
            int[] newArr = new int[myClass.arr.Length + 1];
            for (int i = 0; i < myClass.arr.Length; i++)
                newArr[i] = myClass.arr[i];
            newArr[newArr.Length - 1] = otherNumber;
            myClass.arr = newArr;
            return myClass;
        }
 
        // Массив увеличился на единицу, вначале записалось число, а потом оставшийся массив
        //public static MyClass operator +(MyClass myClass, int otherNumber)
        //{
        //    int[] newArr = new int[myClass.arr.Length + 1];
        //    newArr[0] = otherNumber;
        //    for (int i = 0; i < myClass.arr.Length; i++)
        //        newArr[i + 1] = myClass.arr[i];
        //    myClass.arr = newArr;
        //    return myClass;
        //}
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            MyClass my = new MyClass();
            my += 5;
            my.PrintArray();
            my.PrintNumber();
 
            Console.ReadKey();
        }
    }
}
Добавлено через 16 минут
КОП, а если объект большой, то все данные переписывать?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
24.10.2019, 16:37
Цитата Сообщение от Enifan Посмотреть сообщение
а если объект большой, то все данные переписывать?
1. Не переписываете и получаете неверный результат
2. Переписываете, дропается производительность, но код хотя бы работает
3. Не занимаетесь ерундой и не переопределяете всякие инкременты для огромных классов

я за 3
0
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 89
25.10.2019, 07:10  [ТС]
Enifan, Задание не моё, оно из учебника Васильева "C# для начинающих")
0
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 89
17.12.2022, 12: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
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
//Листинг 8.2.
class MyClass
{
    public int[] nums;
 
    public MyClass(int i)
    {
        nums = new int[i];
 
        Random rnd= new Random();
 
        for (int k = 0; k < nums.Length; k++)
        {
            nums[k] = rnd.Next(100);
        }
 
    }
 
    public static string operator~(MyClass A)
    {
        string txt = "";
        for (int i = 0; i < A.nums.Length; i++)
        {
            txt += $"{A.nums[i]}\t";
        }
        return txt;
    }
 
    public static MyClass operator++(MyClass A)
    {
        int[] nums1 = new int[A.nums.Length+1];
        
        nums1[nums1.Length - 1] = 0;
        
        for (int i = 0; i < A.nums.Length; i++)
        {
            nums1[i] = A.nums[i];
        }
 
        A.nums = nums1;
 
        return A;
    }
 
    public static MyClass operator--(MyClass A)
    {
        int[] nums1 = new int[A.nums.Length - 1];
 
        for (int i = 0; i < nums1.Length; i++)
        {
            nums1[i] = A.nums[i];
        }
        A.nums = nums1;
 
        return A;
    }
    
    public static MyClass operator+(MyClass a, MyClass b)
    {
        int size = a.nums.Length+b.nums.Length;
 
        MyClass obj = new MyClass(size);
 
        for (int i = 0; i < obj.nums.Length; i++)
        {
            if (i < a.nums.Length) obj.nums[i] = a.nums[i];
            if(i>= a.nums.Length) obj.nums[i] = b.nums[i- a.nums.Length];
        }
 
        return obj;
    }
 
    public static MyClass operator+(int a, MyClass b)
    {
        MyClass obj = new MyClass(b.nums.Length+1);
 
        obj.nums[0] = a;
        for (int i = 0; i < b.nums.Length; i++)
        {
            obj.nums[i + 1] = b.nums[i];
        }
 
        return obj;
    }
 
    public static MyClass operator+(MyClass a, int x)
    {
        MyClass obj=new MyClass(a.nums.Length+1);
 
        obj.nums[obj.nums.Length-1] = x;
 
        for (int i = 0; i < a.nums.Length; i++)
        {
            obj.nums[i] = a.nums[i];
        }
 
        return obj;
    }
 
    public override string ToString()
    {
        string txt = "";
        for (int i = 0; i < nums.Length; i++)
        {
            txt+=$"{this.nums[i]}\t";
        }
 
        return txt;
    }
}
 
class MainClass
{
    static void Main()
    {
        MyClass obj = new MyClass(10);
 
        Console.WriteLine(obj);
        
        obj--;
        Console.WriteLine(obj);
 
        obj++;
        Console.WriteLine(obj);
 
        MyClass obj1 = new MyClass(12);
        Console.WriteLine(obj1);
 
        Console.WriteLine((obj+obj1));
 
        Console.WriteLine((obj + 40));
 
        Console.WriteLine((40+obj));
 
        Console.WriteLine(~obj); ;
    }
}
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,732
Записей в блоге: 1
17.12.2022, 14:02
Шрайн, похоже на правильный вариант.
Немного улучшений можно сделать тут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static MyClass operator+(MyClass a, MyClass b)
    {
        int size = a.nums.Length+b.nums.Length;
 
        MyClass obj = new MyClass(size);
 
        for (int i = 0; i < a.nums.Length; i++)
        {
            obj.nums[i] = a.nums[i];
        }
 
         for (int i = a.nums.Length; i < b.nums.Length; i++)
        {
            obj.nums[i] = b.nums[i-a.nums.Length];
        }
 
        return obj;
    }
Аддитивные операторы можно перегрузить например так:
C#
1
2
3
4
5
6
7
8
9
10
11
    public static MyClass operator+(int a, MyClass b)
    {
        MyClass obj = new MyClass(b.nums.Length);
 
        for (int i = 0; i < b.nums.Length; i++)
        {
            obj.nums[i] = b.nums[i]+a;
        }
 
        return obj;
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2022, 14:02
Помогаю со студенческими работами здесь

Лафоре. Глава 11. Задача 2
Решал задачку из учебника - Лафоре. Глава 11. Задача 2. Вот код #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Заменить нежелательные слова словом BLEEP.
Задача: Напишите программу, заглушающую нежелательные слова; иначе говоря, считайте слова из потока cin и выведите их в поток cout, заменив...

Правильное ли решение задачи? Лафоре. 3 глава 9 задача
Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за вашим столом могут разместиться всего лишь 4 человека Сколькими...

Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача
Добрый день. Столкнулся с непонятным свойством. При сокращении программы, выводится другой результат. Вот программа написанная мной,...

Задача из Bjarne Stroustrup (Глава 12,7 №2)Графическая линия в консоли(в стиле ASCII)
Глава 12,7 №2. Implement a simple graphics system using whatever graphics facilities are available on your system (if you don’t have a...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru