• Подскажитe примеры креативных сайтов-визиток веб-программистов?

    Kaaboeld
    @Kaaboeld
    Web-разработчик
    Тоже сейчас размышляю о подобном(для своего(команды) сайта).
    Вот из последнего для вдохновения что мне подкинули:
    mystaticself.com
    Так же рекомендую посмотреть на работы с awwwards:
    awwwards.com
    Ответ написан
    1 комментарий
  • Как разбить вектор на подвектора разной длинны?

    hrls
    @hrls
    fn main() {
        let values: Vec<u64> = vec![9, 7, 6, 3, 4, 0, 1, 7, 3, 9];
    
        let (_, groups): (Option<u64>, Vec<Vec<u64>>) = values
            .into_iter()
            .filter(|value| *value > 0)
            .fold((None, vec![]), |(previous, mut groups), current| {
                match previous {
                    Some(previous) if previous >= current => {
                        if let Some(last_group) = groups.last_mut() {
                            last_group.push(current);
                        } else {
                            groups.push(vec![current]);
                        }
                    }
                    _ => groups.push(vec![current]),
                };
                (Some(current), groups)
            });
    
        dbg!(&groups);
    
        let sums: Vec<u64> = groups
            .into_iter()
            .map(|group| group.into_iter().sum())
            .collect();
    
        dbg!(&sums);
    }


    https://play.rust-lang.org/?version=stable&mode=de...
    Ответ написан
    Комментировать
  • Первая попытка в ООП. Прошу оценить код. Что можно было бы исправить?

    Во-первых, программу стоит переписать без использования сырых указателей. Вместо них — std::string и std::unique_ptr<Person>. Создать указатель на наследника можно так:
    static_cast<std::unique_ptr<Person>>(std::make_unique<Formalist>())


    Во-вторых, присоединяюсь к maaGames, Type выкинуть, а для получения информации, специфичной для наследника, использовать виртуальные функции.
    Ответ написан
    Комментировать
  • Первая попытка в ООП. Прошу оценить код. Что можно было бы исправить?

    maaGames
    @maaGames
    Погроммирую программы
    returnMyTypeInText() сделать виртуальной, чтобы каждый класс возвращал своё название. Потому что switch по типам не объектно-ориентировано :)
    Про виртуальный деструктор не забыли, так что уже отлично для первого раза.
    Лучше сразу приучаться разделять интерфейс и реализацию (h/cpp) и не писать using namespace std хэдере.
    Ответ написан
    2 комментария
  • Почему ошибка в коде c++?

    scottparker
    @scottparker
    разве 0.19 не через точку пишется?)
    Ответ написан
    Комментировать
  • Оцените С++ код пожалуйста?

    @User700
    Зачем разворачивать строчки, если можно запустить цикл сравнения в обратную сторону.
    Как и сказали, странно видеть вывод в cout в "утилитарных" функциях. Логично было бы возвращать эти данные функцией (в кортеже/паре или своей структуре).
    Скорее всего алгоритмическая ошибка: если загадано 1223, а пользователь ввел 92227, то он угадал одну или две цифры? Наверно две.
    Если бы функция только смотрела на строки, то передавать надо было их по конст. ссылке или string_view. Т.к. меняет, то да, слелано правильно -- по значению. Здесь объекты -- короткие строки, не влияет; а в общем случае тогда при вызове можно передавать те данные, которые дальше не нужны:
    compUsrWthCmptr(std::move(guess), pcNumber);
    Или проще убрать объявление guess, и записать
    compUsrWthCmptr(std::to_string(usersGuess), pcNumber);

    Странное название startTheGame. Как будто есть еще асинхронные pause и stop. Наверно просто game подошло лучше.
    Ответ написан
    Комментировать
  • Оцените С++ код пожалуйста?

    Adamos
    @Adamos
    Если вы собираетесь заниматься Крестами более серьезно, чем эта лаба в С-стиле, обратите внимание на следующее. Ваши функции выполняют всякие довольно банальные операции, но при этом называются compUsrWthCmptr и предполагают исполнение именно этих, нужных сейчас, действий. А точнее - понимание того, что и зачем делает эта функция, при работе с ней.
    Для будущего попробуйте абстрагироваться от задачи и писать функции, выполняющие именно те действия, которые они выполняют, без всякого знания о том, что происходит вне их. Сравнивает у вас функция две строки - вот и пускай сравнивает. Ей надо знать только алгоритм сравнения, а не то, что этот инпут - пользовательский. В нее приходит две строки, выходит результат - и все.
    А вот в вызывающей ее функции вы напишете более высокоуровневый код подготовки ввода к обработке этой функцией и действия по ее результату. И эта функция, в отличие от вашей, будет читаться легко и непринужденно.
    Так у вас низкоуровневое копание в байтах будет изолировано от более человеческой логики программы, и разделив код на подобные уровни - значительно легче с ним работать. Особенно когда вы перейдете от процедурщины к классам.
    Ответ написан
    1 комментарий