Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/30: Рейтинг темы: голосов - 30, средняя оценка - 4.50
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676

Добавить к коду подсчет яркостей

22.09.2020, 09:49. Показов 7755. Ответов 124
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
                foreach (var p in source)
                {
                    //get pixel from dithering matrix
                    var dithPixel = dith[p.X % dith.Width, p.Y % dith.Height].GetBrightness();
                    //get pixel from source image
                    var pixel = source[p].GetBrightness();
                    //compare
                    res[p] = pixel >= dithPixel ? Color.White : Color.Black;
                }
Вот такой код есть из темы.
Хочу расширить код подсчитывая количество значений яркости dithPixel например в виде структуры [Value, Count], но не могу вспомнить как это сделать через хеши (именованные массивы).
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2020, 09:49
Ответы с готовыми решениями:

Добавить к коду подсчет вызовов функции
помогите добавить подсчет вызовов функции,вообще не знаю,как symbol = 's' height = 3 width = 3 counter = 3 def dec1(f): ...

Подсчёт суммы значений в ячейках по столбцу по коду товара
Для упрощения. Вот есть две таблицы. Первая с двумя столбцами и кучей строк. 1 столбец в ней - это код товара, 2 столбец - цена. Товар...

Добавить комментарии к коду
Здравствуйте. Кто сможет закомментировать код? <script language="JavaScript"> var elements = document.URL.substr(8).split(/\/|\\/); ...

124
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
28.09.2020, 14:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от belalugoci Посмотреть сообщение
Сейчас 4 ядра по 3 ГГц а проблема такая же.
В таком коде работает только одно ядро.

От распараллеливания толку не будет.
Только если изображений много и каждое обрабатывать в своей задаче.

Ещё раз пишу - ускорить можно.
Но вместо GetBrightness(), Math.Truncate(pixel * 1000), надо реализовывать свои двоичные быстрые методы.
Так же надо разобраться как работает ImageWrapper - возможно он вносит существенную задержку.

Цитата Сообщение от belalugoci Посмотреть сообщение
По ссылке в начале темы есть вложение в другой теме, там полный код проекта.
Можете дать просто ссылку здесь на реализацию этого типа.
Не надо отсылать куда-то что-то искать, рыть.
0
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
28.09.2020, 14:03
Цитата Сообщение от Элд Хасп Посмотреть сообщение
От распараллеливания толку не будет.
Ну хз. На большом изображении вполне себе будет толк.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
28.09.2020, 14:13
belalugoci, мне в принципе не нравится ImageWrapper.
Вряд ли у вас есть необходимость в таком типе.

У вас есть готовая пиксельная картинка.
Что такое яркость? Насколько, знаю это сумма трёх младших байт пикселя (четвёртый - прозрачность).
Вот не помню только просто сумма или с коэффициентами.

Получаете значение яркости от 0 до 255*3.
И дальше уже проводите статистику.

Зачем из байтов получать float потом из него int... Это моветон.

Способов получения из bmp пиксельного (байтового) массива - множество.
На форуме тоже есть попадались такие темы.

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Ну хз. На большом изображении вполне себе будет толк.
Цитата Сообщение от belalugoci Посмотреть сообщение
картинка 3840х2400 считалась 5,5 сек в первом случае и так же во втором.
Для массива 3840х2400...?
Сомневаюсь.
Мне кажется основную задержку вносит тип ImageWrapper .
Без него массив такого размера должен считать за микросекунды, ну, десятки микросекунд.
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,775
28.09.2020, 14:19
Элд Хасп
https://www.cyberforum.ru/blog... g3507.html

Добавлено через 5 минут
Насчёт ускорения - можно самостоятельно напрямую с буфером изображения работать, не оборачивая каждый пиксель в 'Point', а каждый цвет в 'Color', что в вашем случае даёт десятки миллионов операций выделения памяти под эти мелкие объекты. Ещё можно отказаться от дефолтной реализации вычисления яркости и представления её во 'float' с последующей перегонкой в 'int'.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
28.09.2020, 14:25
Цитата Сообщение от kotelok Посмотреть сообщение
https://www.cyberforum.ru/blog... g3507.html
belalugoci, так там класс совсем для другого предназначен.
Только получение отдельного пикселя занимает чёрт знает сколько времени
C#
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
        public Color this[int x, int y]
        {
            get
            {
                var i = GetIndex(x, y);
                return i < 0 ? DefaultColor : Color.FromArgb(data[i + 3], data[i + 2], data[i + 1], data[i]);
            }
 
            set
            {
                var i = GetIndex(x, y);
                if(i >= 0)
                {
                    outData[i] = value.B;
                    outData[i + 1] = value.G;
                    outData[i + 2] = value.R;
                    outData[i + 3] = value.A;
                };
            }
        }
А потом к нему применяются методы GetBrightness(), Math.Truncate(pixel * 1000) - тоже мягко говоря не быстрые.

Надо получить просто байтовую развёртку bmp и работать с ней.
Даже, на C# это должно быть очень быстро.
Максимум десятые доли секунды.

Добавлено через 1 минуту
Цитата Сообщение от kotelok Посмотреть сообщение
можно самостоятельно напрямую с буфером изображения работать, не оборачивая каждый пиксель в 'Point', а каждый цвет в 'Color', что в вашем случае даёт десятки миллионов операций выделения памяти под эти мелкие объекты
Полностью согласен.
Об этом и пишу.

Добавлено через 1 минуту
Цитата Сообщение от kotelok Посмотреть сообщение
Ещё можно отказаться от дефолтной реализации вычисления яркости и представления её во 'float' с последующей перегонкой в 'int'.
Вообще, бессмысленная операция, там где по сути нужна просто сумма трёх байт.
0
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
28.09.2020, 14:30
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для массива 3840х2400...?
Сомневаюсь.
Это девять миллионов пикселей. Вполне себе можно было бы ускорить вычисление гистограммы разбив это дело на два потока. Только это грамотно надо сделать...
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
28.09.2020, 14:33
Цитата Сообщение от Usaga Посмотреть сообщение
Это девять миллионов пикселей. Вполне себе можно было бы ускорить вычисление гистограммы разбив это дело на два потока. Только это грамотно надо сделать...
Может быть.
Но на вскидку больше 90% времени занимают ImageWrapper, GetBrightness(), Math.Truncate(pixel * 1000).
Надо сначала от них избавиться и посмотреть результат.
0
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
28.09.2020, 14:35
Согласен. Сначала нужно посмотреть на что уходит большая часть времени.
1
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
29.09.2020, 09:54  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вообще, бессмысленная операция, там где по сути нужна просто сумма трёх байт.
Не утверждаю, но мне кажется расчет яркости не сводится к сумме трех байт и в описаниях к работе с яркостью и нормализацией использование данных с плавающей запятой рекомендуется (но не обязательно)

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Надо получить просто байтовую развёртку bmp и работать с ней
судя по всему достаточно на входе картинку сразу обрабатывать и хранить только матрицу яркостей, а вот с яркостями уже играться используя те или иные преобразования.

Цитата Сообщение от Usaga Посмотреть сообщение
Это девять миллионов пикселей. Вполне себе можно было бы ускорить вычисление гистограммы разбив это дело на два потока. Только это грамотно надо сделать...
На четыре ) а еще лучше чтобы число потоков можно было задавать.
А грамотный кодинг это скорее к вам, чем ко мне.

Цитата Сообщение от Usaga Посмотреть сообщение
Согласен. Сначала нужно посмотреть на что уходит большая часть времени.
сейчас посчитаю отдельный части кода по времени.

Добавлено через 1 час 53 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Согласен. Сначала нужно посмотреть на что уходит большая часть времени.
время от начала работы internal static Bitmap Process2(Bitmap bmp)
00:00:00.028 - инициализация переменных
00:00:00.100 - время на:
C#
1
2
3
using (var res = new ImageWrapper(result))
using (var dith = new ImageWrapper(ditheringMatrix))
using (var source = new ImageWrapper(bmp, true))
00:00:01.601 - время на:
C#
1
foreach (var p in source)
00:00:01.967 - время на сортировку и вывод в textBox1
00:00:05.400 - общее время работы
Итого
28 мс на инициализации
72 мс на using
1501 мс на подсчёт яркостей
366 мс на вывод текста
3433 мс на заполнение пикселей Black/White Colors

Добавлено через 2 минуты
C#
1
2
3
4
5
6
                foreach (var p in source)
                {
                    var dithPixel = dith[p.X % dith.Width, p.Y % dith.Height].GetBrightness();
                    var pixel = source[p].GetBrightness();
                    res[p] = pixel >= dithPixel ? Color.White : Color.Black; // rnd.Next(0, 99) > 20 ? Color.Black : Color.White;
                }
это как раз код последней части

Добавлено через 1 час 26 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Надо получить просто байтовую развёртку bmp и работать с ней.
Даже, на C# это должно быть очень быстро.
Как этот код можно использовать у меня до обработки:
C#
1
res[p] = pixel >= dithPixel ? Color.White : Color.Black;
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
29.09.2020, 12:15
belalugoci, чуть покопался в методах работы с изображениями - до этого не приходилось с ними работать.

Сбацал такой вот метод получающий яркости:
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
        /// <summary>Преобразует пиксельное цветное изображение в массив in[] яркостей.</summary>
        /// <param name="bmp">Цветное изображение.</param>
        /// <returns>Массив int[] яркостей пикселей. Значения яркостей в процентах.</returns>
        public static int [] GetBrightnes (Bitmap bmp)
        {
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            byte[] bmpBytes;
 
            using (MemoryStream ms = new MemoryStream())
            {
                bmp.Save(ms, ImageFormat.Bmp);
                bmpBytes = ms.ToArray();
            }
 
 
                int[] brightnes = new int[bmpBytes.Length / 3];
            // Y=0.3*R+0.59*G+0.11*B
            int r = 30, g = 59, b = 11;
            for (int i = 0, k = 0; i < brightnes.Length; i++, k +=3)
            {
                brightnes[i] = r * bmpBytes[k] + g * bmpBytes[k + 1] + b * bmpBytes[k + 2];
            }
            stopwatch.Stop();
            return brightnes;
        }
Проверьте его "в реальном деле" - возможно подойдёт вам.
Отпишите результат.

Добавлено через 2 минуты
belalugoci, по какой-то причине у меня не совпадает размерность исходного изображения с размером массива bmpBytes.
Так и должно быть?
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
29.09.2020, 12:44  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Проверьте его "в реальном деле" - возможно подойдёт вам.
как с ним работать в том коде, который я использую?
создать переменную int [] a = GetBrightnes(bmp); // замена строки using (var source = new ImageWrapper(bmp, true))
и это у нас что? линейная развёртка изображения?
яркости от 0 до 99? это критически мало, если пользоваться целочисленным представлением то хотя бы word

Цитата Сообщение от Элд Хасп Посмотреть сообщение
по какой-то причине у меня не совпадает размерность исходного изображения с размером массива bmpBytes.
Так и должно быть?
Это ваш код, как я могу ответить на этот вопрос?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
29.09.2020, 12:46
Цитата Сообщение от Элд Хасп Посмотреть сообщение
по какой-то причине у меня не совпадает размерность исходного изображения с размером массива bmpBytes.
Так и должно быть?
Так bmp имеет специальный формат с заголовком и прочим. Если нужны только пиксели, то нужно делать по другому, через Bitmap.LockBits...
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
29.09.2020, 13:00
Цитата Сообщение от belalugoci Посмотреть сообщение
яркости от 0 до 99?
Я не совсем правильно выразился.
Не в процентах, а умноженные на сто.
Считается яркость по формуле Y=30*R+59*G+11*B.

Можно добавить сразу деление на 100:
C#
22
               brightnes[i] =(r * bmpBytes[k] + g * bmpBytes[k + 1] + b * bmpBytes[k + 2])/ 100;
Цитата Сообщение от Someone007 Посмотреть сообщение
через Bitmap.LockBits...
Сейчас пробую, но результаты тоже не однозначны...

Добавлено через 2 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Цитата Сообщение от belalugoci Посмотреть сообщение
яркости от 0 до 99?
Я не совсем правильно выразился.
Не в процентах, а умноженные на сто.
В процентах по отношению к цвету (1,1,1).
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
29.09.2020, 14:14
belalugoci, вот рабочий код, если понял, что вам надо.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        /// <summary>Контейнер для связанных данных по яркости изображения.</summary>
        public class BrightnesData
        {
            /// <summary>Массив Яркостей.</summary>
            public int[,] Brightnes { get; }
            /// <summary>Массив кортежей яркостей и количества точек с такой яркостью.</summary>
            public (int brightne, int count)[] BrightnesCounts { get; }
 
            public BrightnesData(int[,] brightnes, (int brightne, int count)[] brightnesCounts)
            {
                Brightnes = brightnes;
                BrightnesCounts = brightnesCounts;
            }
        }
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
        /// <summary>Преобразует пиксельное цветное изображение в массив in[,] яркостей.</summary>
        /// <param name="bmp">Цветное изображение в формате bmp.</param>
        /// <param name="dev">Коэффициент приведения процентов.</param>
        /// <returns>Массив int[,] яркостей пикселей.
        /// Значения яркостей в процентах по отношениию к цвету (1, 1, 1) делённое на dev.</returns>
        public static BrightnesData GetBrightnes(Bitmap bmp)
        {
 
            BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
            int stride = bmpData.Stride;
            byte[] bmpBytes = new byte[stride * bmp.Height];
            System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, bmpBytes, 0, bmpBytes.Length);
 
            int[,] brightnes = new int[bmp.Height, bmp.Width];
 
            // Y=0.3*R+0.59*G+0.11*B
            int r = 30, g = 59, b = 11;
            int k = 0;
            int[] brightnesCounts = new int[256];
            for (int row = 0; row < bmp.Height; row++)
            {
                for (int col = 0; col < bmp.Width; col++)
                {
                    brightnes[row, col] = r * bmpBytes[k] + g * bmpBytes[k + 1] + b * bmpBytes[k + 2];
                    brightnes[row, col] /= 100;
                    brightnesCounts[brightnes[row, col]]++;
                    k++;
                }
            }
 
            (int brightne, int count)[] brightnesCountsSort = brightnesCounts
                .Select((cnt, br) => (brightne: br, count: cnt))
                .Where(pr => pr.count > 0)
                .OrderBy(pr => pr.count)
                .ToArray();
 
            return new BrightnesData(brightnes, brightnesCountsSort);
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        static void Main(string[] args)
        {
            Stopwatch stopwatch = new Stopwatch();
 
            Bitmap bmp = (Bitmap)Image.FromFile(@"C:\Users\EldHa\OneDrive\Изображения\FlatEarthMap.bmp");
 
            stopwatch.Start();
            var brightnes = GetBrightnes(bmp);
            stopwatch.Stop();
 
            Console.WriteLine($"Минимальное количество точек с одной яркостью: {brightnes.BrightnesCounts[0]}");
            Console.WriteLine($"Максимальное количество точек с одной яркостью: {brightnes.BrightnesCounts[brightnes.BrightnesCounts.Length - 1]}");
            Console.WriteLine($"Количество различных яркостей: {brightnes.BrightnesCounts.Length}");
            Console.WriteLine("Список яркостей яркостей в порядке возрастания их количества");
            Console.WriteLine(string.Join(Environment.NewLine, brightnes.BrightnesCounts));
Основное время работы метода занимает получение байтового массива изображения.
Как оно будет коррелироваться с размером изображения - не знаю.
Проверьте сами.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
29.09.2020, 14:16
Цитата Сообщение от Someone007 Посмотреть сообщение
Если нужны только пиксели, то нужно делать по другому, через Bitmap.LockBits...
Разобрался, но этот способ раз в 10-100 медленнее.
Было бы неплохо разобраться с исходным форматом, но я не спец по работе с изображениями.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
29.09.2020, 14:23
Цитата Сообщение от belalugoci Посмотреть сообщение
яркости от 0 до 99? это критически мало, если пользоваться целочисленным представлением то хотя бы word
Реальная яркость в RGB формате в диапазоне 0-255.
Дробные значения - это ошибки округления при подсчёте по формуле Y=0.3*R+0.59*G+0.11*B.

Добавлено через 4 минуты
При желании можно считать и дробные значения.
Для этого надо изменить коэффициент деления и, соответственно, размерность массива:

C#
25
                   brightnes[row, col] /= 20;
C#
19
            int[] brightnesCounts = new int[256 * 100 / 20];
Значения яркостей в коллекциях тоже пропорционально увеличатся.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
29.09.2020, 14:24
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Разобрался, но этот способ раз в 10-100 медленнее.
Понятное дело что медленнее, но более универсальный, т.к. будет работать и с bmp, и с jpg, и с png...

Ну и можно чуть-чуть ускорить, если убрать копирование в массив byte[] bmpBytes, читая пиксели напрямую через указатель bmpData.Scan0. Это так же уберет все проверки на выход за границы массива. Или использовать новомодный Span<T>.

C#
1
2
3
4
5
6
unsafe
{
    byte* pixelsPtr = (byte*)bmpData.Scan0;
 
    // use pixelsPtr[index]
}
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
29.09.2020, 14:31
Цитата Сообщение от Someone007 Посмотреть сообщение
читая пиксели напрямую через указатель bmpData.Scan0.
Это же свойство?
Как его использовать?

Не получится ли , что ускорится в одном месте (создание байтового массива), но значительно замедлится в другом (доступ к каждому пикселю в цикле)?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
29.09.2020, 14:35
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это же свойство?
Как его использовать?

Не получится ли , что ускорится в одном месте (создание байтового массива), но значительно замедлится в другом (доступ к каждому пикселю в цикле)?
Я же выше показал как использовать. Должно быть быстрее.

Удалить
C#
1
2
            byte[] bmpBytes = new byte[stride * bmp.Height];
            System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, bmpBytes, 0, bmpBytes.Length);
изменить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
unsafe
{
            byte* pixelsPtr = (byte*)bmpData.Scan0;
 
            for (int row = 0; row < bmp.Height; row++)
            {
                for (int col = 0; col < bmp.Width; col++)
                {
                    brightnes[row, col] = r * pixelsPtr[k] + g * pixelsPtr[k + 1] + b * pixelsPtr[k + 2]; /// !!!
                    brightnes[row, col] /= 100;
                    brightnesCounts[brightnes[row, col]]++;
                    k++;
                }
            }
}
А еще вы забыли Bitmap.UnlockBits.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
29.09.2020, 14:50
Цитата Сообщение от Someone007 Посмотреть сообщение
Я же выше показал как использовать. Должно быть быстрее.
Пропустил, не заметил - невнимательность.
Проверю сейчас.

Добавлено через 5 минут
Цитата Сообщение от Someone007 Посмотреть сообщение
Должно быть быстрее.
Вышло дольше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2020, 14:50

Добавить комментарии к коду
нужно прокомментировать код mov ax,@data mov ds,ax mov cx,br mov si,offset mas xor ax, ax c1: xor ax, ax mov al, jmp...

Добавить комментарии к коду
Кто нибудь напишите подробный комментарий к коду ни СИ. Можно подробней по &quot;#define size 5&quot; и int a, a и a. ...

Добавить к коду многоадресный делегат
В иерархии, созданной в этой работе «Интерфейсы», добавить использование для проверки всех методов данного класса многоадресный делегат. ...

К готовому коду добавить процедуру
Суммы элементов каждого столбца матрицы X(m,n), имеющих значения в интервале Min…Max. Для столбца. (К ГОТОВОМУ КОДУ ДОБАВИТЬ ПРОЦЕДУРУ)...

К коду добавить вывод в консоль
Нужно вывести массив в консоль. Как ни пытался, то 0 выводит, то ошибки .586 .model flat,stdcall option casemap:none include...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru