1

(8 відповідей, залишених у C/C++)

leofun01 написав:

надати функції доступ до приватних членів

Це і є порушення інкапсуляції.

2

(12 відповідей, залишених у Робота)

alena1992 написала:

На Dou пишуть про профіль в linkedin, мовляв, без нього важко знайти хорошу роботу.

linkedin не так допомагає тобі шукати роботу, як допомагає роботі шукати тебе, це досить зручно. Складається враження що найбільш мастисті ІТ контори шукають програмістів саме через linkedin. Тому, мабуть, програмісти  і не рекомендують шукати роботу на інших ресурсах, бо там контори "простіше".

3

(61 відповідей, залишених у Алгоритми та структури даних, технології)

koala написав:

Ось більш зручний варіант для Arete: https://ideone.com/ujiPtf

Дякую, а мій варіант коду вище виявився неправильним :)

4

(61 відповідей, залишених у Алгоритми та структури даних, технології)

При zenik 5 2 мій код дає результат:

all moves: 16
wrong moves: 3
corect moves: 13

І це схоже вірний результат, бо існує 3 невірних варіанти:

10000 - зразу на останню сходинку, пропустили 4 сходинки
10001 - з першої на останню сходинку, пропустили 3 сходинки
11000 - зразу на передостанню, пропустили 3 сходинки

P.S. але якщо враховувати що всі сходинки можна пройти за 1 крок то варіант 10000 буде вірним..

5

(61 відповідей, залишених у Алгоритми та структури даних, технології)

#include <iostream>
#include <cmath>
#include <cstdlib>

int getWrongMoves(int n, int k)
{
    int result = 1;
    for (int i = 1; i < n - k; ++i)
    {
        result = 2 * result + i;
    }
    return  result;
}

int main(int argc, char *argv[])
{
    int n = 0;
    int k = 0;

    if (argc > 2)
    {
        n = atoi(argv[1]);
        k = atoi(argv[2])+1;
    }
    if (n < 1 || n > 100)
    {
        std::cout << "Usage: zenik <N>, <K>\n"
                  " where 1 <= N, K <= 100" << std::endl;
        return 0;
    }

    double allMoves = std::pow(2, n-1);
    double wrongMoves = 0;

    if (k == 1)
    {
        wrongMoves = allMoves - 1;
    }
    else if (k >= n)
    {
        wrongMoves = 0;
    }
    else
    {
        wrongMoves = getWrongMoves(n, k);
    }

    std::cout << "all moves: " << allMoves <<  std::endl;
    std::cout << "wrong moves: " << wrongMoves <<  std::endl;
    std::cout << "corect moves: " << allMoves - wrongMoves <<  std::endl;

    return 0;
}

6

(61 відповідей, залишених у Алгоритми та структури даних, технології)

0 - Зеник не стає на сходинку, 1 - стає. При n сходинок кількість всіх варіантів проходу по них 2^n, але оскільки на останню ходинку він повинен стати то кількість можливих варіантів зменшується вдвічі: 2^(n-1).  Кількість варіантів проходу сходинок за правилом можна розраховувати як кількість всіх варіантів мінус кількість невірних варіантів: 2^(n-1) - .....
Приклад для 6 сходинок:

100000
100001
100010
100011
100100
100101
100110
100111
101000
101001
101010
101011
101100
101101
101110
101111
110000
110001
110010
110011
110100
110101
110110
110111
111000
111001
111010
111011
111100
111101
111110
111111

Нехай m - кількість вірних варінтів, w - кількість невірних варіантів. Тоді для 6 сходинок значення будуть такі:

k = 6, m = 32, w =  0
k = 5, m = 31, w =  1, рядки: 1
k = 4, m = 29, w =  3, рядки: 1,2,17
k = 3, m = 24, w =  8, рядки: 1,2,3,4,9,17,18,25
k = 2, m = 13, w = 19, рядки: 1,2,3,4,5,6,7,8,9,10,13,17,18,19,20,21,25,26,29
k = 1, m =  1, w = 31, рядки: всі крім останнього

Послідовність кількості невірних варіантів w при зменшенні k від n до 0 завжди однакова при будь-якому n: 0, 1, 3, 8, 19, ..., n-1. Достатньо знайти таку функцію f(n,k) яка повертає вірне w і задача буде розв'язана. Але я поки що не знайшов закономірність.

7

(1 710 відповідей, залишених у Розваги та гумор)

koala написав:

Я б прокоментував, але це не безкоштовна послуга.

А я б промовчав, але хто за це заплатить?

8

(2 відповідей, залишених у Пропоную роботу)

koala написав:

Окремим бонусом буде розвіртуалення зі мною :D

Саме так, є такий бонус!

В компанію GTB Technologies, яка займається розробкою DLP системи (data loss prevention) потрібен C++ програміст для ОС Windows рівня Middle.

Стек технологій: C++, SVN, Jenkins, Mongo, Postgresql, json.

Вимоги:

  • 3+ років досвіду програмування на С++;

  • досвід багатопотокового програмування;

  • ООП, Патерни, STL.

Буде плюсом:

  • досвід програмування під Лінукс;

  • знання мережевих протоколів;

  • англійська мова.

Умови:

  • Повна зайнятість, м. Київ, офіс біля ст. м. Лук'янівська;

  • Невеликий дружній колектив;

  • Мінімум бюрократії, можливість проявити себе;

  • Обіди привозять в офіс;

  • Заробітна плата: від $2000 до $∞.


Для звязку:

Sergey Kobezky

Volodymyr Lotoshko


Про компанію можна прочитати тут.
Про DLP системи можна прочитати на Вікі.

10

(17 відповідей, залишених у Інше)

Git це ж інструмент для наведення порядку в коді при розробці, а ви його використовуєте якось так...

https://www.depo.ua/static/file/upload/Aw6smQZ-1502178836.gif

11

(5 відповідей, залишених у C/C++)

Betterthanyou
Щоб заінлайнити функцію, лінкер повинен мати доступ не тільки до оголошення функціїї, але й до її реалізації(коду). Скоріш за все у вас реалізація функції знаходиться в cpp-файлі, а має бути в хедері.

12

(7 відповідей, залишених у C/C++)

В оголошенні функції

void *Blanks::operator new( size_t stAllocateBlock, char chInit[] );

другий параметр являє собою покажчик на char, бо в цьому випадку відбувається розкладання (decay) масиву. Тобто насправді функція має сигнатуру:

void *Blanks::operator new( size_t stAllocateBlock, char * chInit );

Наскільки я знаю в C++ не можна оголосити функцію в яку передається по значенню масив, такі масиви "розкладаються" на вказівник на перший елемент. Передати масив можна тільки по посиланню щось типу char & (chInit[N]) чи якось так. Але при цьому розмір масива N має бути відомий на етапі компіляції.

13

(5 відповідей, залишених у C/C++)

int threadsCount = std::thread::hardware_concurrency();
int part = (end - start) / threadsCount;

std::thread::hardware_concurrency() може повернути нуль, на який ви потім ділите.

14

(7 відповідей, залишених у C/C++)

    for ( unsigned int i = 0; i < 10; ++i)
    {
        cout << "Enter " << i << " element for massiv " << endl;
        for ( g = 0; g <= 9; g++)
        {
            cin >> a;
            massiv1[g] = a;
            cout << "Your element " << a << endl;
            break;
        }
    }

У вас тут два цикли - зовнішній і внутрішній. У внутрішньому циклі ви записуєте значення змінної в масив. Чому дорівнює g при першому і єдиному проходженні у внутрішньому циклу?

15

(7 відповідей, залишених у C/C++)

    for (g = 0; g <= 9; g++)
    {
        cout << " " << massiv1[a];
    }

В цьому циклі треба g-ті елементи виводити, а не a-ті.

16

(2 відповідей, залишених у C/C++)

Не думаю що це хороший варіант але можна спробувати так..

#include <cmath>

....

double k, intpart, fractpart;
cin >> k;
fractpart = modf(k , &intpart);

if(fractpart > 0)
{
  // виводимо помилку
}

17

(49 відповідей, залишених у Обговорення)

karmeljuk написав:

з тих, хто мені писав - так
А ще я сумніваюсь, що хоч в одній конторі, хоч одна людина балакає українською, або розуміє, що расєянє нам не братушки.

Дивне припущення. Я думаю навіть у Харкові можна знайти україномовних в офісах

Згоден, дивне припущення, в київському офісі в якому я нині працюю, майже третина україномовних і мене це радує :)

18

(5 відповідей, залишених у C/C++)

*SCRATCH*

#include <iostream>

void Insert(std::string & s,  const std::string & s1, size_t n)
{
    s.insert(n, s1);
}

int main()
{
    std::string s = "string  test";
    std::string s1 = "substring";
    Insert(s, s1, 7);

    std::cout << s.c_str() << std::endl;
    return 0;
}

19

(16 відповідей, залишених у Обговорення)

Основна кілєрфіча квантума - новий двигун, який нормально оптимізований під багатоядерні процесори. Сторінки грузяться значно швидше і це видно неозброєним оком. Раніше я завжди грішив на швидкість конекту до сайту коли сайт довго грузиться, а як виявилось це зазвичай криворукі програмери не можуть нормально опрацювати сторінку..

20

(84 відповідей, залишених у Обговорення)

FakiNyan написав:

я тут і так кручу, і так, і здається, що без даних кутів ніяк не можу то розв'язати... Але тут, майбуть, можна, якось, по-хитрому скласти декілька таких трикутників до купи, і щось з того взяти для себе

Ти можеш все коли маєш три сторони трикутника. Ну, не все, але кути знайти можна, отак.