От лишенько )) то можна поставити на Арч Пантеон - стільничне середовище від елементарі ОС.

Планую перейти на оце -> https://medium.com/elementaryos/element … 1dfdedc7b3, красиве і достатньо функціональне як на мене.

3

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

Parsifal написав:
void sort(Book&book, int n) {
    char tmp[100];
    int prov;
    for (int i = 0; i < n; i++) {
        prov = strcmp(book[i].name, book[i + 1].name);
    }
}

Якщо в тілі функції ви хочете працювати з аргументом як з масивом, то в сигнатурі функції його треба передавати як вказівник - * ,  не як посилання  - &.

void sort(Book * book, int n) {

4

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

Ctrl+D для завершення вводу.

Eff1c написав:
    while (cin >> x)
    {
        cin >> x;
        y = pow(x, 3) + 2 * pow(x, 2) - 3;
        list_num.push_back(y);
    }

Двічі записуєте в x.

5

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

FakiNyan написав:
Torbins написав:
FakiNyan написав:

а от в мене мишка з клавою дротові, і лазити під стіл, витягувати з пк і запихувати в ноут, буде не дуже круто, ех

Можна USB-хаб використовувати - тоді буде лише один дріт. Причому такий хаб уже може бути вбудований у ваш монік.

А USB2.0 хаб підійде? бо бачу, що 3.0 дорогі якісь

Пропускної здатності USB2.0 для клавіатури та миші більше ніж достатньо.

6

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

FakiNyan написав:

мені монік на ноуті маленький, я звик працювати за 27. А ноута юзати, коли або світла нема, або ще щось ся трапило

Монітор по hdmi від ноутбука це окей. В мене вже з років 10 така домашня конфігурація: ноутбук + монітор + безпровідні клавіатура і миша. Для мене системний блок вдома це вже "вчорашній день".

7

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

*ar = *p[choice - 1](ar, n);

Тут ви перезаписуєте тільки перший елемент масиву ar, який видалений. А вам треба переписати тільки вказівник:

ar = p[choice - 1](ar, n);

8

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

Нічого, але бувають такі випадки коли треба прив'язати створений фабрикою об'єкт до самої фабрики. Наприклад Http сесію cтворює тільки конкретний Http клієнт, або фабрика генерує ціле сімейство пов'язаних між собою об'єктів.

class HttpSession: public std::enable_shared_from_this<HttpSession>
{
public:
    typedef std::shared_ptr<HttpSession> PtrT;

// code
// ...
// code

private:
    HttpSession(const URL& host, uint16_t port);
    friend class HttpClient;
};

//factory for sessions
class HttpClient
{
public:

// code
// ...
// code

    HttpSession::PtrT openSession(const URL& host, uint16_t port = 0);
};

9

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

leofun01 написав:
Arete написав:

І я вважаю це порушенням інкапсуляції.

А я так не вважаю.

Це вже особисте відношення до ситуації, що тут можна сказати..  Поважаю вашу думку, вона не гірша і не краща за мою, просто інша :)


koala написав:

До речі, а й правда - у яких випадках реально неможливо зробити щось без дружньої функції?

Перше що приходить на думку - це приватний конструктор класу і фабрика-друг яка має ексклюзивне право створювати екземпляри класу.

10

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

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

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

class Odd
{
public:
    void setA(int a) { a_ = a; isOdd_ = a_ % 2; }
    bool isOdd() const { return isOdd_; }
    friend void mess(Odd & t);
private:
    int a_;
    bool isOdd_;
};

void mess(Odd & t)
{
    t.a_ = 5;
}

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

11

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

leofun01 написав:

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

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

12

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

alena1992 написала:

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

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

13

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

koala написав:

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

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

14

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

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

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

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

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

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

15

(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;
}

16

(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 і задача буде розв'язана. Але я поки що не знайшов закономірність.

17

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

koala написав:

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

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

18

(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 системи можна прочитати на Вікі.

20

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

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

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