• Почему регулярка не срабатывает в java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Вот тут ошибка;
    if(Pattern.matches(regex, reader.nextLine()));
            Str.add(reader.nextLine())

    reader.nextLine() читает строку и переходит на следующую.
    Т.е. вы читаете строку, анализируете ее, а добавляете уже следующюю (а там, видимо, ничего нет)

    Нужно создать в цикле переименую в которую сохраняется строка и действия все производить уже с этой переменной.
    Ответ написан
    1 комментарий
  • Как найти удаленную работу системным администратором если нет опыта?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    М-да... Давненько я не читал такой поток сознания...

    Удаленный админ, чувак, невозможен. Просто невозможен, физически. Это примерно как секс с помощью факс-машины :) Админ (особенно в небольших конторах) - это многорукий многоног, который тянет провода, чинит мышки, принтеры и чайники и настраивает мобилы бухгалтерам :) В общем, "мужчина в доме". Но и это все надо уметь. Как ты представляешь себе работу админа удаленно?
    Иди в саппорт. К крупному провайдеру, на первую линию - возьмут. Туда берут всех, там головой думать не надо.
    Ответ написан
    2 комментария
  • Как быть хорошим junior?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    1. Адекватность и самостоятельность.
    Детальнее: Умение понять суть задачи, чтобы выполнить ее. Самостоятельно решать проблемы - в это слово входит не только то, что возникла проблема - порешал. А умение решить проблемы, которые ты решить не можешь. То есть организовать решение проблемы. Заблочили аккаунт? Выяснить, вызвонить, попинать, чтобы разлочили побыстрее. Не знаешь как решить какую-то техническую проблему - достучаться до куратора. Не сидеть и ждать три дня, пока он вспомнит про твою проблему, а регулярно уточнять. Занят куратор - подойти к другому. Не успеваешь решить в срок - прийти к куратору заранее, а не за час до конца срока.
    В общем, чтобы за тобой не бегали.

    2. Умение ставить правильные вопросы.
    Сперва загуглить, потом задать вопрос для уточнения. В идеале ставить вопросы, на которые ответ будет "да" или "нет", но это я утрирую. Не бояться спрашивать вещи, которые совсем не понимаешь, но тут не нужно ожидать что все будут разжевывать - следует задать вопрос, чтобы понять куда копать. Иногда достаточно знать пару ключевых слов, по которым можно загуглить.

    3. Желание учиться.
    Не бояться изучить лишнее, потому что "мне же это не пригодится". Умение гуглить по ключевым словам. Не лениться изучать как что-то работает, чтобы понимать почему это происходит. Понимание принципов работы очень сильно увеличивает интуицию.
    Ответ написан
    1 комментарий
  • Как расширить диапазон случайных значений от 0 до 1 включительно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для начала стоит проверить, есть ли вообще значения x большие единицы.
    D = a2 + 8×b, D ∈ [0, 9]
    x1 = (−a + √D) / 2, x1 ∈ [-1, √2]
    x2 = (−a − √D) / 2, x1 ∈ [-2, 0]

    Нужные значения есть. И достигаются они только у одного из корней. Значит есть смысл писать программу и определять вероятность методом Монте-Карло.

    const monteCarlo = (tryCount) => {
      let positive = 0;
      for (let i = 0; i < tryCount; i += 1) {
        const a = Math.random();
        const b = Math.random();
        const D = a * a + 8 * b;
        const x = (-a + Math.sqrt(D)) / 2;
        if (x > 1) {
          positive += 1;
        }
      }
      return(positive / tryCount);
    }
    monteCarlo(1000000); // 0.249374
    monteCarlo(10000000); // 0.2500279


    А теперь решим аналитически. Нам надо найти соотношение площадей квадрата (0,0)-(1,1) и той его части, на которой x > 1.
    Для этого решим уравнение
    (−a + √(a2 + 8×b)) / 2 > 1
    −a + √(a2 + 8×b) > 2
    √(a2 + 8×b) > a + 2
    a2 + 8×b > a2 + 4×a + 4
    8×b > 4×a + 4
    b > (a + 1) / 2
    Если нарисовать график прямой b = (a + 1) / 2, то получим, что она отделяет 1/4 площади квадрата. Таким образом, учитывая равномерное распределение a и b, искомая вероятность 0.25.
    Ответ написан
    1 комментарий
  • Удаление и добавление объектов в динамический массив через функцию?

    Alexandroppolus
    @Alexandroppolus
    кодир
    void Add(Train*& train, int numb_trains)

    numb_trains должен быть ссылкой, а то ты его меняешь в функции, а снаружи всем пофиг.
    Ответ написан
    Комментировать
  • Grub error: unknown filesystem?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    похоже вы не ведали что творили :)
    полагаю вы сделали общий динамический диск

    п.с.
    да и картинку хотя бы какую-то приложили (желательно где управление дисками)

    п.с.2
    Что такое динамические диски
    5. Как преобразовать динамический диск в базовый
    Windows может преобразовывать диски из базового типа в динамический с сохранением их разметки и содержимого. А вот с обратным направлением будем иметь головную боль: оно работает, если только жёсткий полностью неразмечен. Чтобы не терять данные, придётся прибегнуть к помощи стороннего софта – например, AOMEI Dynamic Disk Manager, AOMEI Dynamic Disk Converter или Acronis Disk Director.
    Ответ написан
    Комментировать
  • Как организовать работу двух динамических массивов используя malloc?

    @res2001
    Developer, ex-admin
    Добавлю ко всему выше написанному: подобное использование двумерных массивов убивает производительность, т.к. вместо одного чтения памяти происходит 2, а кроме того весь массив разбит на много маленьких кусков, которые лежат в разных местах памяти - кэш процессора используется не эффективно. В нагруженных приложениях это будет сказываться.
    Правильнее использовать двумерный массив выделенный одним куском и пересчитывать индексы в ручную:
    int *a = malloc(sizeof(int) * n * m);
    for(int i=0; i < n; ++i)
      for(int j=0; j < m; ++j)
        *(a + i * m + j) = 0;

    Это стандартный вариант использования двумерного массива, который будет работать везде и на С++ то же.

    Что бы избежать пересчета индексов (например когда массивы трехмерные или больше) можно использовать промежуточный "указатель на массив переменной длины" (правда это будет работать только на gcc/clang и в С++ работать не будет, только С99+). Подробно расписывать не буду, т.к. тут важно понимание. Если будет интересно в интернете информацию по VLA найдете.
    Ответ написан
    1 комментарий
  • Как организовать работу двух динамических массивов используя malloc?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Надо так:
    void arr_cr( int ***a , int n, int m){
        int i,j;
        a*=(int **)malloc(n*sizeof(int *));
        for( i=0 ; i < n ; i++)
            (a*)[i]=(int *)malloc(m*sizeof(int));
    }


    У вас везде напутано - вы создаете n/10/10 int*, а потом заполняете их циклом до m/8/12. Выделили 10 элементов, заполнили 8 или 12. Непорядок.

    И когда вы выделяете память под строку массива в цикле, вы должны не sizeof(int) памяти выделять, а в m/8/12 раз больше - вы же под всю строку память выделять должны.

    edit: еще не заметил, что массив передается по значению. Надо передавать int***.
    Ответ написан
    Комментировать
  • Деление элементов массива на один из элементов этого же массива?

    Если вам нужна проверка с конца, то измените for:
    for(int i=n-1;i>=0;--i){

    if( a[i] % e == 0){
                        SetColor(4);
                        S+=a[i];
                       }
                    else if( a[i] % 5 == 0){
                        SetColor(5);
                        P*=a[i];
                    }
                    else SetColor(9);
    
                    printf("%5i",a[i]);


    }
    В таком случае, цикл пойдет с конца массива
    Ответ написан
    Комментировать
  • Деление элементов массива на один из элементов этого же массива?

    @galaxy
    e=a[-5];

    Это еще что? Не на жаваскрипте же пишем, кто так пятый с конца элемент достает?
    Ответ написан
    4 комментария