Новости информационных технологий - 32981

В С++ существует несколько возможностей передачи массива в функцию.

  1. В С++ массивы можно инициализировать следующим образом:
    int arr[] = {p1, p2, p3, ...}; // длина массива определяется 
    после инициализации

    Как следствие, его можно передать в функцию таким же способом:

    void func(int arr[]){
    //your code
    }
  2. Еще один вариант — передать массив по указателю. Например:
    void func(int* arr){
    //your code
    }
    int arr[5] = {1, 2, 3, 4, 5};

    Мы привыкли обращаться к элементам массива по индексам, но попробуйте скомпилировать и запустить следующие строки:

    int main(){ 
       int arr[5] = {1, 2, 3, 4, 5};
       cout << arr << endl; //в данном случае мы увидим адрес начала массива 
        return 0; //его мы и передаем в массив
    }

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

void func(int* arr, int length){
//your code
}

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

int len(int* arr){
    int count = 0;
    while(*x++ < ?) count++;
    return count;
}

Крайне важно понять критерий по которому мы будем оценивать содержимое. В противном случае, можно получить не совсем то, что ожидалось.
Читать полностью »

Здравствуйте, дорогие хабрачитатели!

Появилась недавно задача подключить к одному интернет-магазину оплату криптовалютой. Причем не только популярными биткоинами, но и такими валютами, о которых мне раньше и слышать не приходилось. Реализовывать полноценный функционал взаимодействия с каждой криптовалютой отдельно, задача не из простых. Если для того же биткоина есть библиотеки, позволяющие начать работу практически из коробки (но без допиливания и танцев с бубном, как показывает практика, не обходится), то, например, для dogecoin нужно писать все с нуля. Так как данный вид оплаты для сайта не предполагался как основной, а скорее как фишка для рекламы и раскрутки, то и бюджет не предполагал крупной разработки. Читать полностью »

Всем привет.

Хочу с Вами поделиться информацией как к «российским» ОС прикрутить репозитории CentOS и заменить установленные пакеты.

Всё началось, когда нашу организацию обязали перейти на «российское» ПО. В первую очередь начал искать серверные ОС. Как оказалось наши разработчики предлагают ОС на базе Linux, а в организации 100% windows платформа. Организация не маленькая, примерно 150 серверов только в одном округе.

После изучения рынка «российских» ОС выбор пал на ROSA и ОСь. ROSA это платная ОС и стоит не маленьких денег, но так как не очень уж хочется платить за воздух я остановился на ОС ОСь. Далее начинается самое интересное далее. У ОСи добавлен репозиторий от РосТех и в версии пакетов добавлена как правило одна буква:

1. Пакет от ОСи — openssh-6.6.1p1-33z3.el7.x86_64
2. Стандартный пакет CentOS — openssh-6.6.1p1-33.el7.x86_64

Первопроходцем должен быть AD на samba4, но тут возникает проблема. При установке зависимостей для samba4 yum не чего не может сделать с пакетами ОСи и соответственно пакеты не устанавливаются из-за неразрешнных зависимостей.

Все действия я делал на ОС ОСь minimal.

В общем решение этой проблемы следующее:

1. Необходимо закоментировать существующие репозитории.
2. Создать новый файл с CentOS'совскими репозиториями.

vi /etc/yum.repos.d/centos7.repo

Вот сам файл centos7.repo
Читать полностью »

Речь в статье пойдет о составных операторах begin-end, форматировании кода и синтаксисе языка Pascal. А начнем мы с цитаты из книги Стива Макконнелла «Совершенный код».

«Большинство споров по поводу форматирования возникает из-за несовершенства большинства популярных языков программирования. Хорошо спроектированный
язык имеет явную структуру блоков, которая приводит к естественному стилю отступов.»

Читать полностью »

История началась с того, что наша маленькая, но гордая компания решила создать приложение для собственных логистических нужд. Обсудив нюансы работы и обозначив конкретные цели, я приступил к реализации. Спустя некоторое время была написана первая версия java приложения и отдана на растерзание тестирование логистам и сотрудникам склада. Более года все шло хорошо, баги успешно создавались и фиксились, функционал приложения постоянно расширялся и совершенствовался, автоматизируя все больше процессов, пока мы не столкнулись с необходимостью использования фискального принтера Posnet Temo HS FV Ej.
Читать полностью »

Пронумеруем строки и столбцы доски размером nxn номерами от 0 до n-1. Номер клетки будет иметь вид (i,j), где i – номер строки, j – номер столбца. Координаты ферзей будут иметь вид (i,p(i)).

Пускай у нас уже расставлены k ферзей в строках от 0 до k-1.

Тогда ферзь с координатами (i,p(i)), где i<k, может бить клетки в строке k с координатами (k,p(i)), (k,p(i)-(k-i)) и (k,p(i)+(k-i)), при этом нас интересуют только клетки с номерами столбцов от 0 до n-1.

Теперь определим битовую маску, для того чтобы определить, в какие клетки строки k нельзя ставить ферзя.

SV(k)=Sum(i=0..k-1,2^p(i))
SD1(k)=Sum(i=0..k-1,2^p(i) shr (k-i))
Если p(i)-(k-i)<0, то 2^p(i) shr (k-i)=0.
SD2(k)=Sum(i=0..k-1,2^p(i) shl (k-i)) and (2^n-1)
Если p(i)+(k-i)>=n, то 2^p(i) shl (k-i) будет отброшено при помощи and (2^n-1).
S(k)=SV(k) or SD1(k) or SD2(k)

где ^ – возведение в степень, or – побитовое или, and – побитовое и, shl – сдвиг влево, shr – сдвиг вправо.

В данном случае используется Sum вместо or, т.к. на любой вертикали или диагонали не может быть более одного ферзя.

Если записать рекуррентно, то получится

SV(0)=0
SD1(0)=0
SD2(0)=0
SV(k+1)=SV(k) or 2^p(k)
SD1(k+1)=(SD1(k) or 2^p(k)) shr 1
SD2(k+1)=((SD2(k) or 2^p(k)) shl 1) and (2^n-1)
Читать полностью »

Это рассказ о новой разработке RemObjects — компании, которая начинала с компонентов для Delphi, а сейчас выпускает целый набор компиляторов Elements для всех популярных платформ: Windows, .NET, JVM, Android, iOS, Cocoa. В набор входят компиляторы с языков Oxygene (клон Паскаля-Delphi), C#, Swift (бесплатный), на любом из которых можно писать для любой указанной выше платформы. И вот теперь в этот список добавляется новый язык — Java. Чем не повод для статьи на Habrahabr?
Читать полностью »

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

Для начала немного несуществующих деревень и сёл

Сальтолово
Ничичи
Каверная Голяна
Придориусловка
Старотипенки
Кюканово
Кутюшевка
Верхний Стед
Сабаревка
Зеленокировка
Хадонские Выселки
Старый Куля
Октяга
Ржиново
Черемошно
Голодионово
Александрово-Полейково
Подлопаново
Малое Сусовое
Горы-Чусалы
Чубравяково


Зачем и почему

Всем привет, меня зовут Илья, я занимаюсь компьютационной биологией и биохимией, в свободное время я заставляю нейросети страдать ерундой.

Основываясь на аналогичных проектах (названия британских деревень, названия мест в Орегоне, названия различных цветов и их RGB), я решил научить нейросеть создавать названия несуществующих населенных пунктов

В качестве нейросети я решил воспользоваться torch-rnn, которую достаточно легко установить и настроить. Список городов и сел я нашел тут (можно скачать все в формате csv). С csv пришлось немного повозиться, чтобы привести ее к utf-8, после чего я запихнул ее в нейросеть и оставил на пару часов. Когда тренировка модели закончилась я взял небольшой сампл и получил следующий результат:

Читать полностью »

Передо мной стояла следующая задача: сделать фильтрацию всех товаров в инфоблоке по одному свойству, сохранив штатный функционал и рабочий «Умный фильтр». Вы скажете, что в битриксе есть замечательный «умный» фильтр с его фасетными индексами, а я скажу, что да, он есть. Но давайте взглянем на исходные данные задачиЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js