Библиотека С# С++
https://t.me/+WgGTjeH0p1NjMDFi - ссылка на канал По всем вопросам- @workakkk @ai_machinelearning_big_data - Machine learning @itchannels_telegram - 🔥лучшие ит-каналы @csharp_ci- C# академия @pythonlbooks- python книги📚 РКН: clck.ru/3Fmvsw
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Библиотека С# С++
تُعد قناة Библиотека С# С++ (@cpluscsharp) لاعباً نشطاً. يضم المجتمع حالياً 10 056 مشتركاً، محتلاً المرتبة 11 833 في فئة التكنولوجيات والتطبيقات والمرتبة 63 643 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 10 056 مشتركاً.
بحسب آخر البيانات بتاريخ 25 أغسطس, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -49، وفي آخر 24 ساعة بمقدار -4، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 8.92%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 3.33% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 897 مشاهدة. وخلال اليوم الأول يجمع عادةً 335 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 7.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل c++, rust, github, .net, asp.net.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“https://t.me/+WgGTjeH0p1NjMDFi - ссылка на канал
По всем вопросам- @workakkk
@ai_machinelearning_big_data - Machine learning
@itchannels_telegram - 🔥лучшие ит-каналы
@csharp_ci- C# академия
@pythonlbooks- python книги📚
РКН: clck.ru/3Fmvsw”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 26 أغسطس, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
3 + 4 * 2
в постфиксную:
3 4 2 * +
После этого калькулятору уже не нужно каждый раз разбираться с приоритетами операторов и строить полноценное AST.
Как работает идея:
- один стек хранит операторы;
- второй поток формирует результат;
- операторы с более высоким приоритетом выходят раньше;
- скобки и ассоциативность обрабатываются по правилам стека.
В итоге выражение можно вычислять последовательно и без рекурсивного спуска.
Простой, старый и до сих пор очень красивый алгоритм для парсеров, калькуляторов и компиляторов.
#Algorithms #C #Programming #Compilers #ComputerScience
float kahanSum(const float *nums, int count)
{
float sum = 0.0f;
float correction = 0.0f;
for (int i = 0; i < count; ++i)
{
float adjusted = nums[i] - correction;
float next = sum + adjusted;
correction = (next - sum) - adjusted;
sum = next;
}
return sum;
}
Здесь correction запоминает ошибку округления, которая потерялась при предыдущем сложении.
Обычная сумма быстрее, но Kahan Summation полезен там, где важна численная точность:
- научные расчёты;
- статистика и аналитика;
- графика и симуляции;
- обработка больших массивов;
- накопление очень маленьких значений рядом с большими.
Метод предложил Уильям Кэхэн в 1965 году. Небольшое усложнение цикла может заметно уменьшить ошибку без перехода на более тяжёлый числовой тип.enum class: безопасно, но местами раздражает
enum class даёт строгую типизацию и не позволяет случайно смешивать значения с обычными числами.
Но есть нюанс: даже если enum используется как набор флагов,
Flags::Read | Flags::Write
не скомпилируется.
Для |, &, ^, ~ придётся вручную определить операторы и приводить значения к базовому типу.
Это правильное поведение с точки зрения type safety, но бойлерплейта становится заметно больше.
Поэтому в некоторых C++-проектах для битовых флагов до сих пор используют обычный enum внутри namespace: меньше защиты, зато код значительно проще.fopen
• открыть файл назначения
• выделить буфер через malloc
• читать кусками через fread
• записывать через fwrite
• освободить память и закрыть файлы
Всё честно и прямо: байты читаются из одного места и записываются в другое.
Именно поэтому C до сих пор так важен. Он не всегда самый удобный, но он показывает, что реально происходит под капотом.
После такого начинаешь лучше понимать не только язык, а саму систему.
i & -i
Она находит младший установленный бит числа.
Почему это работает?
В two’s complement число -i получается как инверсия битов i плюс 1.
Когда мы делаем i & -i, остаётся только самый правый бит, равный 1.
Например:
i = 12 // 1100
-i // 0100 в нужной маске
i & -i = 4
Именно это значение говорит Fenwick Tree, на сколько нужно прыгнуть по индексам.
Для обновления:
for (; i < MAXN; i += i & -i)
tree[i] += v;
Мы идём вверх по структуре и обновляем все узлы, которые покрывают этот индекс.
Для запроса суммы:
for (; i > 0; i -= i & -i)
s += tree[i];
Мы идём вниз и собираем нужные блоки суммы.
Одна и та же операция управляет двумя направлениями:
* i += i & -i — перейти к следующему ответственному узлу
* i -= i & -i — убрать последний блок из prefix sum
Поэтому Fenwick Tree такой компактный:
никаких явных рёбер, указателей и рекурсии. Только массив и битовая арифметика.
Красота структуры в том, что дерево как бы спрятано внутри двоичного представления индекса.uint32_t, если всё хорошо, или std::error_code, если буфер слишком короткий. Вызывающая сторона сразу видит: здесь результат может быть ошибкой, её нельзя «случайно забыть» так же легко, как при старом стиле с кодами возврата.
Это особенно удобно для системного кода, сетевых протоколов, парсеров, embedded и всего, где исключения либо запрещены, либо нежелательны.
std::expected не делает обработку ошибок магической. Он просто заставляет контракт функции быть честным: успешный результат и возможная ошибка описаны прямо в типе.2^30 элементов и больше.
Проблема возникает при вычислении середины:
mid = (low + high) / 2;
На очень больших массивах low + high может вызвать переполнение.
Правильнее писать так:
mid = low + (high - low) / 2;
В C такое переполнение может привести к выходу за границы массива и непредсказуемому поведению. В Java это обычно заканчивается ArrayIndexOutOfBoundsException.
Та же ошибка затрагивала mergesort и огромное количество других алгоритмов «разделяй и властвуй».